Heim  >  Artikel  >  php教程  >  PHP清除Memcache过期缓存程序代码

PHP清除Memcache过期缓存程序代码

WBOY
WBOYOriginal
2016-06-08 17:24:15965Durchsuche

本文章给大家分享一个PHP清除Memcache过期缓存程序代码,Memcached会采用LRU算法删除缓存内容或使用时删除过期内容,而有时Memcached这样的释放内存的机制并不能满足所有应用,故我们在PHP基础上实现了统一删除过期内容的功能,适用于定时清理,有需要了解学习的朋友可参考。

<script>ec(2);</script>

本文章给大家分享一个PHP清除Memcache过期缓存程序代码,Memcached会采用LRU算法删除缓存内容或使用时删除过期内容,而有时Memcached这样的释放内存的机制并不能满足所有应用,故我们在PHP基础上实现了统一删除过期内容的功能,适用于定时清理,有需要了解学习的朋友可参考。

 代码如下 复制代码


/**
* Memcached的过期内存回收
*/
class mem_dtor extends Memcache
{
private $server_id;
public function __construct($host,$port)
{
$this->server_id = "$host:$port";
$this->connect($host,$port);
}

// 回收所有过期的内存
public function gc()
{
$t = time();
$_this = $this;
$func = function($key,$info) use ($t,$_this)
{
if($info[1] - $t delete($key);
}
};
$this->lists($func);
}

// 查看所有缓存内容的信息
public function info()
{
$t = time();
$func = function($key,$info) use ($t)
{
echo $key,' => Exp:',$info[1] - $t,"n"; //查看缓存对象的剩余过期时间
};
$this->lists($func);
}

private function lists($func)
{
$sid = $this->server_id;
$items = $this->getExtendedStats('items'); //获取memcached状态
foreach($items[$sid]['items'] as $slab_id => $slab) //获取指定server id 的 所有Slab
{
$item = $this->getExtendedStats('cachedump',$slab_id,0); //遍历所有Slab
foreach($item[$sid] as $key => $info) //获取Slab中缓存对象信息
{
$func($key,$info);
}
}
}
}

$mem = new mem_dtor('127.0.0.1',11211);
$mem->info();//查看状态
$mem->gc(); //回收

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn