Start · Sprachen · PHP · Referenz · apcu_cache_info

apcu_cache_info

Funktion

Ruft Metainformationen und Statistiken über den APCu-Datenspeicher ab, optional ohne die Liste aller gecachten Einträge.

seit PHP 3.1.1 Kategorie: misc

Signatur

apcu_cache_info(bool $limited = false): array|false

Beschreibung

apcu_cache_info() gibt ein assoziatives Array mit Informationen über den aktuellen Zustand des APCu-Caches zurück. Dazu gehören Angaben über die Speichernutzung, Trefferquoten (Hits/Misses), die Anzahl der gecachten Einträge sowie — sofern $limited nicht auf true gesetzt ist — eine vollständige Liste aller im Cache gespeicherten Schlüssel inklusive Metadaten wie TTL und Erstellungszeit.

Der Parameter $limited ist besonders nützlich, wenn nur allgemeine Statistiken (z. B. für ein Monitoring-Dashboard) benötigt werden, ohne den Overhead des Auflistens aller Cache-Einträge zu erzeugen. In Produktionsumgebungen mit vielen gecachten Einträgen sollte daher true bevorzugt werden.

Typische Anwendungsfälle sind Administrationsoberflächen, Performance-Monitoring, Debugging von Cache-Problemen sowie die Überprüfung der Speicherauslastung des APCu-Caches. Die Funktion ist ausschließlich im PHP-CLI- oder Web-Kontext verfügbar, in dem APCu geladen und aktiv ist.

Zu beachten ist, dass apcu_cache_info() im CLI-Modus nur den Cache der aktuellen CLI-Instanz widerspiegelt, der unabhängig vom Web-Server-Cache ist.

Parameter

Name Typ Default Beschreibung
$limited bool false Wenn true, wird die Liste der einzelnen Cache-Einträge (cache_list) weggelassen. Nur allgemeine Statistiken werden zurückgegeben. Empfehlenswert bei großen Caches, um Speicher und CPU zu schonen.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array mit Cache-Statistiken zurück. Enthält unter anderem: num_slots (Anzahl der Hash-Slots), ttl, num_hits, num_misses, num_inserts, num_entries, expunges, mem_size sowie bei $limited = false auch das Array cache_list mit den einzelnen Cache-Einträgen. Gibt false zurück, wenn APCu nicht aktiviert ist oder ein Fehler auftritt.

Beispiele

Allgemeine Cache-Statistiken ausgeben

<?php
// APCu-Cache mit einigen Einträgen befüllen
apcu_store('user_42', ['name' => 'Anna', 'role' => 'admin'], 300);
apcu_store('config_lang', 'de', 600);

// Nur allgemeine Statistiken abrufen (ohne Eintrags-Liste)
$info = apcu_cache_info(true);

if ($info !== false) {
    echo 'Cache-Treffer:    ' . $info['num_hits']    . PHP_EOL;
    echo 'Cache-Fehlschläge: ' . $info['num_misses']  . PHP_EOL;
    echo 'Einträge im Cache: ' . $info['num_entries'] . PHP_EOL;
    echo 'Speichernutzung:  ' . round($info['mem_size'] / 1024, 2) . ' KB' . PHP_EOL;
} else {
    echo 'APCu ist nicht verfügbar.' . PHP_EOL;
}
Cache-Treffer: 0 Cache-Fehlschläge: 0 Einträge im Cache: 2 Speichernutzung: 1.23 KB

Alle gecachten Einträge auflisten

<?php
apcu_store('session_token_abc', 'xyz123', 120);
apcu_store('rate_limit_user_7', 42, 60);

// Vollständige Info inkl. Eintrags-Liste abrufen
$info = apcu_cache_info(false);

if (!empty($info['cache_list'])) {
    echo 'Gecachte Einträge:' . PHP_EOL;
    foreach ($info['cache_list'] as $entry) {
        echo ' - Schlüssel: ' . $entry['info']
            . ' | TTL: '     . $entry['ttl']
            . ' | Größe: '   . $entry['mem_size'] . ' Byte'
            . PHP_EOL;
    }
} else {
    echo 'Keine Einträge im Cache oder APCu nicht verfügbar.' . PHP_EOL;
}
Gecachte Einträge: - Schlüssel: session_token_abc | TTL: 120 | Größe: 64 Byte - Schlüssel: rate_limit_user_7 | TTL: 60 | Größe: 48 Byte

// Wichtig · Fallstricke

CLI vs. Web-Server: APCu verwaltet im CLI-Modus einen eigenen, von Web-Prozessen getrennten Cache. Ein Aufruf von apcu_cache_info() im CLI zeigt daher nicht den Cache des laufenden Web-Servers und umgekehrt.

Sicherheit: Die Ausgabe von apcu_cache_info() kann sensible Schlüsselnamen oder interne Anwendungsdetails preisgeben. Administrationsskripte, die diese Funktion nutzen, sollten immer durch eine Authentifizierung geschützt sein und niemals öffentlich zugänglich sein.

Performance: Der Aufruf ohne $limited = true bei sehr vielen Cache-Einträgen kann nennenswerten Speicher verbrauchen, da die gesamte cache_list im PHP-Speicher aufgebaut wird. Für reines Monitoring stets true übergeben.