首页 > php教程 > PHP源码 > 正文

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

WBOY
发布: 2016-06-08 17:24:15
原创
965 人浏览过

本文章给大家分享一个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(); //回收

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!