Memcache::getExtendedStats

(PECL memcache >= 2.0.0)

Memcache::getExtendedStats获取池中所有服务器的统计信息

描述

Memcache::getExtendedStats(string $type = ?, int $slabid = ?, int $limit = 100): array

Memcache::getExtendedStats() 返回一个二维关联数组,其中包含服务器统计信息。数组键对应于服务器的 host:port,值包含各个服务器的统计信息。失败的服务器将拥有其对应条目设置为 false。您也可以使用 memcache_get_extended_stats() 函数。

注意:

此函数已添加到 Memcache 2.0.0 版中。

参数

type

要获取的统计信息类型。有效值为 {reset, malloc, maps, cachedump, slabs, items, sizes}。根据 memcached 协议规范,这些附加参数“可能会发生更改,以方便 memcache 开发人员”。

slabid

type 设置为 cachedump 一起使用,以识别要从中转储的 slab。cachedump 命令会占用服务器,并且严格用于调试目的。

limit

type 设置为 cachedump 一起使用,以限制要转储的条目数量。

警告

由于安全原因,已从 memcached 守护进程中删除了 cachedump 状态类型。

返回值

返回一个二维关联数组,其中包含服务器统计信息,或者在失败时返回 false

示例

示例 #1 Memcache::getExtendedStats() 示例

<?php
$memcache_obj
= new Memcache;
$memcache_obj->addServer('memcache_host', 11211);
$memcache_obj->addServer('failed_host', 11211);

$stats = $memcache_obj->getExtendedStats();
print_r($stats);
?>

上面的示例将输出

Array
(
    [memcache_host:11211] => Array
        (
            [pid] => 3756
            [uptime] => 603011
            [time] => 1133810435
            [version] => 1.1.12
            [rusage_user] => 0.451931
            [rusage_system] => 0.634903
            [curr_items] => 2483
            [total_items] => 3079
            [bytes] => 2718136
            [curr_connections] => 2
            [total_connections] => 807
            [connection_structures] => 13
            [cmd_get] => 9748
            [cmd_set] => 3096
            [get_hits] => 5976
            [get_misses] => 3772
            [bytes_read] => 3448968
            [bytes_written] => 2318883
            [limit_maxbytes] => 33554432
        )

    [failed_host:11211] => false
)

参见

添加备注

用户贡献的备注 5 个备注

manmca dot 2280 at gmail dot com
14 年前
获取存储在 memcache 服务器中的所有键的列表…

<?php
/**
* 获取所有 memcache 键的函数
* @author Manish Patel
* @Created: 28-May-2010
*/
function getMemcacheKeys() {

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect to memcache server");

$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$items = $memcache->getExtendedStats('items');
foreach(
$allSlabs as $server => $slabs) {
foreach(
$slabs AS $slabId => $slabMeta) {
$cdump = $memcache->getExtendedStats('cachedump',(int)$slabId);
foreach(
$cdump AS $keys => $arrVal) {
foreach(
$arrVal AS $k => $v) {
echo
$k .'<br>';
}
}
}
}
}
//EO getMemcacheKeys()
?>

希望这有帮助…
oushunbao at 163 dot com
13 年前
获取存储在 memcache 服务器中的所有键的列表…

<?php
/**
* 获取所有 memcache 键的函数
* @author Manish Patel
* @Created: 28-May-2010
* @modified: 16-Jun-2011
*/
function getMemcacheKeys() {

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect to memcache server");

$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$items = $memcache->getExtendedStats('items');
foreach(
$allSlabs as $server => $slabs) {
foreach(
$slabs AS $slabId => $slabMeta) {
$cdump = $memcache->getExtendedStats('cachedump',(int)$slabId);
foreach(
$cdump AS $keys => $arrVal) {
if (!
is_array($arrVal)) continue;
foreach(
$arrVal AS $k => $v) {
echo
$k .'<br>';
}
}
}
}
}
//EO getMemcacheKeys()
?>

从上面复制,但修复了一个警告
我只添加了一行:if (!is_array($arrVal)) continue;
Anonymous
6 年前
最新的更新版本

function getMemcacheKeys() {

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect to memcache server");

$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
foreach($allSlabs as $server => $slabs) {
foreach($slabs AS $slabId => $slabMeta) {
if (!is_int($slabId)) { continue; }
$cdump = $memcache->getExtendedStats('cachedump',(int)$slabId);
foreach($cdump AS $keys => $arrVal) {
if (!is_array($arrVal)) continue;
foreach($arrVal AS $k => $v) {
$list[] = $k;
}
}
}
}
return $list;
}
jcastromail at yahoo dot es
7 年前
" 由于安全原因,cachedump 状态类型已从 memcached 守护进程中删除。 "

截至目前,版本 1.4.5_4_gaa7839e(windows 64 位)仍然支持 cachedump 命令,该命令对于返回存储的键非常重要。
eithed at gmail
8 年前
回复 manmca 点 2280 at gmail 点 com

此功能使 memcached 成为只读,至少对于最新版本的 PECL memcache (3.0.8) 和最新版本的 memcache (1.4.21) 而言,因此,如果您依赖此功能来覆盖/删除特定键,则会遇到糟糕的意外。
To Top