Signatur
Beschreibung
memcache_get_extended_stats() ruft detaillierte Statistiken von allen Servern ab, die im aktuellen Memcache-Pool registriert sind. Die Rückgabe ist ein mehrdimensionales Array, dessen Schlüssel die Serveradressen (im Format host:port) sind und dessen Werte jeweils ein assoziatives Array mit den jeweiligen Statistikwerten des Servers enthalten.
Über den Parameter type lässt sich die Art der abgefragten Statistiken steuern. Mögliche Werte sind reset, malloc, maps, cachedump, slabs, items und sizes. Wird type leer gelassen oder weggelassen, liefert die Funktion die allgemeinen Statistiken, vergleichbar mit dem Memcache-Befehl stats.
Diese Funktion ist besonders nützlich für Monitoring- und Debugging-Zwecke, etwa um Cache-Trefferquoten (get_hits, get_misses), Speicherauslastung (bytes, limit_maxbytes) oder die Anzahl gespeicherter Einträge (curr_items) serverübergreifend zu analysieren.
Die prozedurale Variante memcache_get_extended_stats() ist funktional identisch mit der objektorientierten Methode Memcache::getExtendedStats() und kann alternativ zu ihr verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $memcache Pflicht | Memcache | Das Memcache-Verbindungsobjekt, das den Pool der Server repräsentiert, von denen die Statistiken abgerufen werden sollen. |
|
| $type | string | Art der abzurufenden Statistiken. Gültige Werte: reset, malloc, maps, cachedump, slabs, items, sizes. Leer oder weggelassen liefert allgemeine Statistiken. |
|
| $slabid | int | 0 | Wird nur in Verbindung mit type = 'cachedump' verwendet und gibt die ID des Slabs an, dessen Inhalte ausgegeben werden sollen. |
| $limit | int | 100 | Maximale Anzahl der Einträge, die bei einem cachedump zurückgegeben werden. Standardmäßig 100. |
Rückgabewert
host:port) ist und der zugehörige Wert ein Array mit den Statistiken des jeweiligen Servers. Ist ein Server nicht erreichbar, enthält sein Eintrag false. Die Funktion selbst gibt false zurück, wenn keine Verbindung möglich ist.Beispiele
Allgemeine Statistiken aller Pool-Server abrufen
<?php
$memcache = new Memcache();
$memcache->addServer('localhost', 11211);
$memcache->addServer('memcache2.example.com', 11211);
$stats = memcache_get_extended_stats($memcache);
if ($stats === false) {
echo 'Statistiken konnten nicht abgerufen werden.';
} else {
foreach ($stats as $server => $data) {
if ($data === false) {
echo "Server {$server} ist nicht erreichbar.\n";
continue;
}
echo "Server: {$server}\n";
echo " Aktuell gespeicherte Einträge : " . $data['curr_items'] . "\n";
echo " Cache-Treffer : " . $data['get_hits'] . "\n";
echo " Cache-Fehler : " . $data['get_misses'] . "\n";
echo " Belegter Speicher (Bytes) : " . $data['bytes'] . "\n";
echo " Maximaler Speicher (Bytes) : " . $data['limit_maxbytes'] . "\n\n";
}
}
Slab-Statistiken eines bestimmten Servers abrufen
<?php
$memcache = new Memcache();
$memcache->addServer('localhost', 11211);
// Slab-Statistiken abrufen
$slabStats = memcache_get_extended_stats($memcache, 'slabs');
if (!empty($slabStats['localhost:11211'])) {
$serverSlabs = $slabStats['localhost:11211'];
foreach ($serverSlabs as $slabId => $slabData) {
if (!is_array($slabData)) {
continue;
}
echo "Slab #{$slabId}:\n";
echo " Chunk-Größe : " . $slabData['chunk_size'] . " Bytes\n";
echo " Genutzte Chunks : " . $slabData['used_chunks'] . "\n";
echo " Freie Chunks : " . $slabData['free_chunks'] . "\n\n";
}
} else {
echo 'Keine Slab-Daten verfügbar.';
}
// Wichtig · Fallstricke
Sicherheitshinweis: Der cachedump-Typ gibt die tatsächlichen Schlüssel und (auf Wunsch) Werte des Caches aus. Diese Informationen sollten niemals ungeschützt an Browser oder externe Clients weitergegeben werden, da sie sensible Anwendungsdaten enthalten können.
Performance: Der Aufruf von memcache_get_extended_stats() erzeugt für jeden Server im Pool eine separate Netzwerkanfrage. Bei großen Pools sollte die Funktion daher nur für Monitoring-Zwecke und nicht in zeitkritischen Code-Pfaden eingesetzt werden.
Deprecation: Die memcache-Erweiterung (PECL memcache) gilt als veraltet. Für neue Projekte wird die modernere memcached-Erweiterung (PECL memcached) empfohlen, die das Memcached-Objekt mit der Methode Memcached::getStats() bereitstellt.