亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4749 | 回復: 1
打印 上一主題 下一主題

php下Memcache清理過期緩存內(nèi)容 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-01-28 16:35 |只看該作者 |倒序瀏覽
我們經(jīng)常會使用Memcached的存儲過期功能,而實際上在過期后,Memcached并不能馬上回收過期內(nèi)容,這樣會很快存滿至配置限制,根據(jù)不同配置,Memcached會采用LRU算法刪除緩存內(nèi)容或使用時刪除過期內(nèi)容,而有時Memcached這樣的釋放內(nèi)存的機制并不能滿足所有應用,故我們在PHP基礎(chǔ)上實現(xiàn)了統(tǒng)一刪除過期內(nèi)容的功能,適用于定時清理.

  1. <?php
  2. /**
  3. * mem_dtor:對Memcached的過期內(nèi)存回收
  4. * Author:lajabs
  5. */
  6. class mem_dtor extends Memcache
  7. {
  8.         private $server_id;
  9.         public function __construct($host,$port)
  10.         {
  11.                 $this->server_id = "$host:$port";
  12.                 $this->connect($host,$port);
  13.         }

  14.         // 回收所有過期的內(nèi)存
  15.         public function gc()
  16.         {
  17.                 $t = time();
  18.                 $_this = $this;
  19.                 $func = function($key,$info) use ($t,$_this)
  20.                 {
  21.                         if($info[1] - $t < -30)                                                                                //30秒過期的緩沖
  22.                         {
  23.                                 $_this->delete($key);
  24.                         }
  25.                 };
  26.                 $this->lists($func);
  27.         }

  28.         // 查看所有緩存內(nèi)容的信息
  29.         public function info()
  30.         {
  31.                 $t = time();
  32.                 $func = function($key,$info) use ($t)
  33.                 {
  34.                         echo $key,' => Exp:',$info[1] - $t,"\n";                                        //查看緩存對象的剩余過期時間
  35.                 };
  36.                 $this->lists($func);
  37.         }

  38.         private function lists($func)
  39.         {
  40.                 $sid = $this->server_id;
  41.                 $items                        = $this->getExtendedStats('items');                                //獲取memcached狀態(tài)
  42.                 foreach($items[$sid]['items'] as $slab_id => $slab)                                //獲取指定server id 的 所有Slab
  43.                 {
  44.                         $item        = $this->getExtendedStats('cachedump',$slab_id,0);        //遍歷所有Slab                        
  45.                         foreach($item[$sid] as $key => $info)                                                //獲取Slab中緩存對象信息
  46.                         {
  47.                                 $func($key,$info);
  48.                         }
  49.                 }        
  50.         }
  51. }

  52. $mem = new mem_dtor('127.0.0.1',11211);
  53. $mem->info();//查看狀態(tài)
  54. $mem->gc();         //回收
  55. ?>
復制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2011-01-28 18:18 |只看該作者
標記
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP