Start · Sprachen · PHP · Referenz · memcache_get_extended_stats

memcache_get_extended_stats

Funktion

Liefert erweiterte Statistiken aller Server im Memcache-Pool als assoziatives Array.

seit PHP 2.0.0 Kategorie: db

Signatur

memcache_get_extended_stats(Memcache $memcache, string $type = '', int $slabid = 0, int $limit = 100): array|false

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

Typ
array|false
Beschreibung
Gibt ein mehrdimensionales assoziatives Array zurück, in dem jeder Schlüssel eine Serveradresse (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";
    }
}
Server: localhost:11211 Aktuell gespeicherte Einträge : 42 Cache-Treffer : 1893 Cache-Fehler : 57 Belegter Speicher (Bytes) : 204800 Maximaler Speicher (Bytes) : 67108864 Server: memcache2.example.com:11211 Aktuell gespeicherte Einträge : 18 Cache-Treffer : 743 Cache-Fehler : 21 Belegter Speicher (Bytes) : 98304 Maximaler Speicher (Bytes) : 67108864

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.';
}
Slab #1: Chunk-Größe : 96 Bytes Genutzte Chunks : 10 Freie Chunks : 214 Slab #2: Chunk-Größe : 120 Bytes Genutzte Chunks : 5 Freie Chunks : 117

// 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.