Signatur
Beschreibung
memcache_get_stats() ruft Statusinformationen vom verbundenen Memcache-Server ab und gibt diese als assoziatives Array zurück. Die Funktion ist die prozedurale Entsprechung der objektorientierten Methode Memcache::getStats().
Die zurückgegebenen Statistiken enthalten unter anderem Angaben zur Anzahl der gespeicherten Items, zur aktuellen Speichernutzung, zu Cache-Hits und -Misses sowie zur Serverversion. Dies ist besonders nützlich für Monitoring-Anwendungen oder zur Diagnose von Performance-Problemen.
Mit dem Parameter type lässt sich die Art der zurückgegebenen Statistiken steuern. Mögliche Werte sind z. B. 'reset', 'malloc', 'maps', 'cachedump', 'slabs', 'items' und 'sizes'. Besonders 'cachedump' erfordert zusätzlich die Angabe von slabid und limit, um gezielt Einträge eines bestimmten Slabs abzurufen.
Hinweis: Die PECL-Erweiterung memcache (nicht zu verwechseln mit memcached) gilt als veraltet. Für neue Projekte sollte die neuere memcached-Erweiterung verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $memcache Pflicht | Memcache | Eine aktive Memcache-Verbindungsressource, die zuvor mit memcache_connect() oder memcache_pconnect() erstellt wurde. |
|
| $type | string | null | Art der abzurufenden Statistiken. Mögliche Werte: 'reset', 'malloc', 'maps', 'cachedump', 'slabs', 'items', 'sizes'. Wird null übergeben, werden die allgemeinen Statistiken zurückgegeben. |
| $slabid | int | 0 | Wird nur in Kombination mit type = 'cachedump' verwendet. Gibt die Slab-ID an, deren Einträge aufgelistet werden sollen. |
| $limit | int | 100 | Maximale Anzahl der bei cachedump zurückgegebenen Einträge pro Slab. |
Rückgabewert
false zurückgegeben.Beispiele
Allgemeine Serverstatistiken abrufen
<?php
$memcache = memcache_connect('localhost', 11211);
if ($memcache === false) {
die('Verbindung zum Memcache-Server fehlgeschlagen.');
}
$stats = memcache_get_stats($memcache);
if ($stats !== false) {
echo 'Memcache-Version: ' . $stats['version'] . PHP_EOL;
echo 'Aktuell gespeicherte Items: ' . $stats['curr_items'] . PHP_EOL;
echo 'Gesamte Verbindungen: ' . $stats['total_connections'] . PHP_EOL;
echo 'Cache-Hits: ' . $stats['get_hits'] . PHP_EOL;
echo 'Cache-Misses: ' . $stats['get_misses'] . PHP_EOL;
} else {
echo 'Statistiken konnten nicht abgerufen werden.';
}
memcache_close($memcache);
Slab-Statistiken abrufen
<?php
$memcache = memcache_connect('localhost', 11211);
if ($memcache === false) {
die('Verbindung fehlgeschlagen.');
}
// Slab-Statistiken abrufen
$slabStats = memcache_get_stats($memcache, 'slabs');
if ($slabStats !== false) {
foreach ($slabStats as $key => $value) {
if (is_array($value)) {
echo "Slab {$key}:" . PHP_EOL;
foreach ($value as $k => $v) {
echo " {$k}: {$v}" . PHP_EOL;
}
} else {
echo "{$key}: {$value}" . PHP_EOL;
}
}
} else {
echo 'Slab-Statistiken nicht verfügbar.';
}
memcache_close($memcache);
Cache-Dump eines bestimmten Slabs
<?php
$memcache = memcache_connect('localhost', 11211);
if ($memcache === false) {
die('Verbindung fehlgeschlagen.');
}
// Zuerst Slab-IDs ermitteln
$slabs = memcache_get_stats($memcache, 'slabs');
// Cache-Dump von Slab 1, max. 20 Einträge
$dump = memcache_get_stats($memcache, 'cachedump', 1, 20);
if (!empty($dump)) {
foreach ($dump as $key => $info) {
echo "Key: {$key}, Größe: {$info[0]} Bytes, Ablauf: {$info[1]}" . PHP_EOL;
}
} else {
echo 'Keine Einträge in Slab 1 gefunden.';
}
memcache_close($memcache);
// Wichtig · Fallstricke
Sicherheitshinweis: Der cachedump-Typ kann sensible Schlüsselnamen im Cache offenlegen. Diese Funktion sollte niemals in einer öffentlich zugänglichen Anwendung ohne Zugangskontrolle verwendet werden.
Deprecation-Hinweis: Die memcache-PECL-Erweiterung wird nicht mehr aktiv weiterentwickelt. Für neue Projekte wird die Verwendung der modernen memcached-Erweiterung empfohlen, die unter anderem konsistentes Hashing und SASL-Authentifizierung unterstützt.
Der cachedump-Befehl ist auf dem Memcache-Server standardmäßig ein relativ teurer Vorgang und sollte nicht in hochfrequentierten Produktionsumgebungen eingesetzt werden, da er den Server kurzzeitig blockieren kann.