Signatur
Beschreibung
apcu_key_info() gibt ein assoziatives Array mit Metadaten zu einem gespeicherten Cache-Eintrag zurück. Dazu gehören unter anderem Informationen über Erstellungszeit, Ablaufzeit (TTL), Zugriffszähler und die Größe des gespeicherten Wertes. Mit diesen Daten lässt sich der Zustand einzelner Cache-Einträge präzise überwachen und debuggen.
Die Funktion ist besonders nützlich in Monitoring- oder Debugging-Szenarien, wenn man nicht nur prüfen möchte, ob ein Schlüssel existiert (apcu_exists()), sondern auch nachvollziehen will, wann er zuletzt geschrieben wurde, wie oft er abgerufen wurde oder wann er abläuft.
Existiert der angegebene Schlüssel nicht im Cache, gibt die Funktion false zurück. Dies ermöglicht eine einfache Fehlerbehandlung. Zu beachten ist, dass die verfügbaren Felder im zurückgegebenen Array je nach APCu-Version leicht variieren können.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $key Pflicht | string | Der Name des Cache-Schlüssels, über den Informationen abgerufen werden sollen. |
Rückgabewert
hits (Anzahl der Zugriffe), access_time (letzter Zugriff als Unix-Timestamp), mtime (Erstellungs-/Änderungszeit), creation_time (Erstellungszeit), deletion_time (Löschzeitpunkt, 0 wenn nicht gelöscht), expunge_time, num_entries, mem_size (Speicherbedarf in Bytes) sowie ttl (Time-to-Live in Sekunden, 0 = unbegrenzt). Existiert der Schlüssel nicht, wird false zurückgegeben.Beispiele
Grundlegende Nutzung: Informationen zu einem Cache-Eintrag abrufen
<?php
// Einen Wert mit TTL von 60 Sekunden im Cache speichern
apcu_store('user_42', ['name' => 'Max Mustermann', 'role' => 'admin'], 60);
// Metainformationen zum Schlüssel abrufen
$info = apcu_key_info('user_42');
if ($info !== false) {
echo 'Schlüssel existiert im Cache.' . PHP_EOL;
echo 'Erstellt am: ' . date('Y-m-d H:i:s', $info['creation_time']) . PHP_EOL;
echo 'Letzter Zugriff: ' . date('Y-m-d H:i:s', $info['access_time']) . PHP_EOL;
echo 'Zugriffe gesamt: ' . $info['hits'] . PHP_EOL;
echo 'Speicherbedarf: ' . $info['mem_size'] . ' Bytes' . PHP_EOL;
echo 'TTL: ' . $info['ttl'] . ' Sekunden' . PHP_EOL;
} else {
echo 'Schlüssel nicht im Cache vorhanden.';
}
Ablaufzeit eines Cache-Eintrags berechnen
<?php
apcu_store('session_token', 'abc123xyz', 300);
$info = apcu_key_info('session_token');
if ($info !== false && $info['ttl'] > 0) {
$expires_at = $info['creation_time'] + $info['ttl'];
$remaining = $expires_at - time();
if ($remaining > 0) {
echo 'Cache läuft ab in: ' . $remaining . ' Sekunden.' . PHP_EOL;
echo 'Ablaufzeitpunkt: ' . date('H:i:s', $expires_at) . PHP_EOL;
} else {
echo 'Cache-Eintrag ist bereits abgelaufen (wartet auf Bereinigung).';
}
} else {
echo 'Schlüssel nicht gefunden oder kein TTL gesetzt.';
}
// Wichtig · Fallstricke
Hinweis zur CLI: APCu ist im CLI-Modus standardmäßig deaktiviert. Um es dort zu aktivieren, muss apc.enable_cli=1 in der php.ini gesetzt sein. Andernfalls gibt apcu_key_info() stets false zurück.
Verfügbarkeit der Felder: Die genaue Zusammensetzung des zurückgegebenen Arrays ist nicht durch einen stabilen API-Vertrag garantiert. In unterschiedlichen APCu-Versionen können Feldnamen abweichen oder fehlen. Greife daher mit isset() auf einzelne Felder zu, bevor du sie verwendest.
Kein Locking: Die zurückgegebenen Daten stellen eine Momentaufnahme dar. In Umgebungen mit hoher Parallelität können sich die Werte zwischen dem Aufruf von apcu_key_info() und der Auswertung bereits geändert haben.