Start · Sprachen · PHP · Referenz · apcu_clear_cache

apcu_clear_cache

Funktion

Leert den gesamten APCu-Benutzercache des aktuellen PHP-Prozesses.

seit PHP 4.0.0 Kategorie: misc

Signatur

apcu_clear_cache(): bool

Beschreibung

apcu_clear_cache() entfernt alle im APCu-Cache gespeicherten Einträge. Dies betrifft ausschließlich den Benutzercache (user cache), in dem Daten über apcu_store(), apcu_add() oder apcu_fetch() abgelegt wurden.

Die Funktion ist nützlich, wenn nach einem Deployment oder einer Konfigurationsänderung alle zwischengespeicherten Daten auf einmal invalidiert werden sollen, ohne den Webserver neu starten zu müssen. Sie kann beispielsweise in einem Deployment-Skript oder einem Admin-Panel aufgerufen werden.

Achtung: Da APCu shared Memory nutzt, wirkt apcu_clear_cache() auf alle Anfragen, die denselben PHP-FPM-Worker-Pool oder Apache-Prozess teilen — nicht nur auf die aktuelle Anfrage. Ein leichtfertig platzierter Aufruf in produktivem Code kann daher die Cache-Effizienz dauerhaft beeinträchtigen.

Im CLI-Kontext (z. B. Cronjobs) arbeitet APCu standardmäßig mit einem separaten Cache-Segment, sodass ein apcu_clear_cache()-Aufruf auf der Kommandozeile den Cache des Webservers nicht beeinflusst.

Rückgabewert

Typ
bool
Beschreibung
Gibt immer true zurück, sofern APCu aktiviert ist. Ist die Erweiterung nicht geladen, steht die Funktion nicht zur Verfügung.

Beispiele

Cache nach einem Deployment leeren

<?php
// Einfaches Deployment-Skript: Cache nach Codeänderungen invalidieren
if (apcu_clear_cache()) {
    echo 'APCu-Cache erfolgreich geleert.';
} else {
    echo 'Fehler beim Leeren des APCu-Caches.';
}
APCu-Cache erfolgreich geleert.

Kombination mit apcu_store und Überprüfung des Cache-Inhalts

<?php
// Einige Werte im Cache speichern
apcu_store('benutzer_42', ['name' => 'Alice', 'rolle' => 'admin']);
apcu_store('config_version', 7);

// Cache-Inhalt vor dem Leeren prüfen
$info = apcu_cache_info();
echo 'Einträge vor dem Leeren: ' . count($info['cache_list']) . PHP_EOL;

// Gesamten Cache leeren
apcu_clear_cache();

// Cache-Inhalt nach dem Leeren prüfen
$info = apcu_cache_info();
echo 'Einträge nach dem Leeren: ' . count($info['cache_list']) . PHP_EOL;
Einträge vor dem Leeren: 2 Einträge nach dem Leeren: 0

// Wichtig · Fallstricke

Sicherheitshinweis: Der Aufruf von apcu_clear_cache() sollte durch geeignete Zugriffskontrollen (z. B. Authentifizierung, IP-Beschränkung) abgesichert werden. Ein öffentlich erreichbarer Endpunkt, der diese Funktion aufruft, ermöglicht es Angreifern, gezielt einen Cache-Flooding-Angriff (Cache DoS) durchzuführen, indem sie den Cache wiederholt leeren und so den Datenbankserver überlasten.

Im CLI-Kontext muss die php.ini-Einstellung apc.enable_cli=1 gesetzt sein, damit APCu überhaupt funktioniert. Ohne diese Einstellung sind alle APCu-Funktionen im CLI-Modus wirkungslos.

Seit APCu 5.x existiert kein Opcode-Cache mehr (dieser wurde in OPcache ausgelagert), weshalb der früher in APC vorhandene Parameter zum Auswählen des Cache-Typs entfallen ist. apcu_clear_cache() akzeptiert daher keine Argumente mehr.