网上看了一个,可以取到所有key值。但是发现php手册里写的稍微有点不一样。
php手册 Memcache::getExtendedStats
Note:
这个函数在Memcache2.0.0版本加入。
Note:
(译注)获取Memcache内所有数据方法:首先使用getExtendedStats(‘slabs’)获取到每个服务器上活动slabs分块的id, 然后 使用getExtendedStats(‘cachedump’, $slabid, $limit)来获取每个slab里面缓存的项,其中$slabid是slab分块id, $limit指 期望获取其中的多少条记录。
整合了一下:
function show($host,$port){
$memcache_obj = new Memcache();
$memcache_obj->addServer($host, $port);
//echo $memcache_obj->getversion();
$memcache_obj->set(‘xx’,'xx’);
$memcache_obj->set(‘yy’,'yy’);
$memcache_obj->set(‘zz’,'zz’);
//方式一 网上的
$result = $memcache_obj->getExtendedStats(‘items’);
$items=$result["$host:$port"]['items'];
//方式二 php手册说的
//$result = $memcache_obj->getExtendedStats(‘slabs’);
//$items = $result["$host:$port"];
//print_r($items);exit;
$arr_slabid=array_keys($items);
//print_r($arr_slabid);
//exit;
foreach($arr_slabid as $id)
{
$id=intval($id);
$str=$memcache_obj->getExtendedStats("cachedump",$id,0);
$line=$str["$host:$port"];
if(!empty($line))
{
$keys = array_keys($line);
foreach($keys as $key)
{
$data[$key] = $memcache_obj->get($key);
}
}
}
$memcache_obj->close();
print_r($data);
exit;
}
//调用
show(’127.0.0.1′,11211);
输出:
Array ( [zz] => zz [yy] => yy [xx] => xx )
郁闷的是:
我想连接memcacheq 看队列的内容,比如短信的队列,重试队列,死信队列。
可能想看看重试队列里是哪些短信息,或者死信队列里面是哪些内容,然后判断是不是需要再次弄到短信队列里发送。
show(’192.168.0.249′,22201);
啥也没有,memcacheq 版本0.2.0
另外如果用tokyo trant B+ Tree(支持memcache协议) 作为队列,能不能通过这种方式获取:
show(’192.168.0.249′,1978);
有知道的大侠路过请告知。