PHP 8.5.0 Beta 1 available for testing

Memcache::getExtendedStats

memcache_get_extended_stats

(PECL memcache >= 2.0.0)

Memcache::getExtendedStats -- memcache_get_extended_statsПолучает статистику с каждого сервера в пуле

Описание

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

Метод Memcache::getExtendedStats() возвращает двумерный ассоциативный массив, который содержит статистику серверов. Ключи массива соответствуют формату host:port сервера, а значения содержат статистику отдельного сервера. Для неисправных серверов возвращается запись со значением false.

Замечание:

Функцию добавили в модуль Memcache версии 2.0.0.

Список параметров

type

Тип статистики для извлечения. Допустимые значения: reset, malloc, maps, cachedump, slabs, items, sizes. Спецификация протокола Memcached предупреждает о возможном изменении или удалении этих дополнительных аргументов в новых версиях сервера, по усмотрению разработчиков, даже если изменения нарушат обратную совместимость.

slabid

Параметр устанавливают одновременно с передачей в параметр type значения cachedump, чтобы указать, из какого slab-класса выгружать дамп кеша. Команда cachedump блокирует работу сервера и выполняется только в целях отладки.

limit

Параметр устанавливают одновременно с передачей в параметр type значения cachedump, чтобы ограничить количество записей в дампе.

Внимание

Тип статистики cachedump удалили из демона memcached по соображениям безопасности.

Возвращаемые значения

Метод возвращает двумерный ассоциативный массив, который содержит статистику по серверам, или значение 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 notes

up
8
manmca dot 2280 at gmail dot com
15 years ago
Get lists of all the keys stored in memcache server....

<?php
/**
* Function to get all memcache keys
* @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()
?>

Hope it helps....
up
3
oushunbao at 163 dot com
14 years ago
Get lists of all the keys stored in memcache server....

<?php
/**
* Function to get all memcache keys
* @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()
?>

copy from up, but fix a warning
i only add one line: if (!is_array($arrVal)) continue;
up
1
Anonymous
7 years ago
the latest updated version:

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;
}
up
0
jcastromail at yahoo dot es
8 years ago
" The cachedump stat type has been removed from the memcached daemon due to security reasons. "

To the date, the version 1.4.5_4_gaa7839e (windows 64bits) still supports the command cachedump that its highly important to returns the keys stored.
up
0
eithed at gmail
9 years ago
In response to manmca dot 2280 at gmail dot com

This function makes the memcached read only, at least with the most recent version of PECL memcache (3.0.8) and most recent version of memcache (1.4.21), so if you're relying on this to overwrite / remove only certain keys you're in for a nasty suprise
To Top