Signatur
Beschreibung
wincache_ucache_clear() entfernt sämtliche im WinCache User-Cache gespeicherten Schlüssel-Wert-Paare auf einmal. Dies ist nützlich, wenn der Cache nach Deployments, Konfigurationsänderungen oder bei der Fehlersuche komplett zurückgesetzt werden soll, ohne den Webserver neu starten zu müssen.
Der WinCache User-Cache ist ein gemeinsam genutzter Speicherbereich, der prozessübergreifend für alle PHP-Prozesse unter IIS (Internet Information Services) zugänglich ist. Eine einzelne PHP-Anfrage kann damit Daten hinterlegen, die von anderen Anfragen gelesen werden. Das vollständige Leeren des Caches wirkt sich daher sofort für alle laufenden Anfragen aus.
Im Gegensatz zu wincache_ucache_delete(), das gezielt einzelne Schlüssel entfernt, verwirft wincache_ucache_clear() alle eingetragenen Einträge ohne Ausnahme. Statt es produktiv auszuführen, sollte man gut überlegen, ob wirklich der gesamte Cache gelöscht werden muss, da dies zu einem kurzfristigen Performance-Einbruch (Cache-Miss-Welle) führen kann.
Die Funktion steht ausschließlich unter Windows mit installierter und aktivierter WinCache-Erweiterung zur Verfügung. Auf anderen Betriebssystemen oder ohne die Erweiterung existiert sie nicht.
Rückgabewert
true zurück, wenn der User-Cache erfolgreich geleert wurde. Gibt false zurück, wenn ein Fehler aufgetreten ist, z. B. wenn die WinCache-Erweiterung nicht verfügbar oder der Cache nicht initialisiert ist.Beispiele
Gesamten User-Cache nach einem Deployment leeren
<?php
// Typischer Einsatz nach einem Software-Update oder Deployment
if (wincache_ucache_clear()) {
echo 'WinCache User-Cache wurde erfolgreich geleert.';
} else {
echo 'Fehler: Cache konnte nicht geleert werden.';
}
Cache-Clear mit Verfügbarkeitsprüfung
<?php
// Sicherstellen, dass die WinCache-Erweiterung vorhanden ist
if (function_exists('wincache_ucache_clear')) {
// Einige Werte in den Cache schreiben
wincache_ucache_set('user_1', ['name' => 'Anna', 'role' => 'admin']);
wincache_ucache_set('user_2', ['name' => 'Bob', 'role' => 'editor']);
wincache_ucache_set('config_version', 42);
echo 'Einträge vor dem Leeren: ';
var_dump(wincache_ucache_exists('user_1')); // bool(true)
// Gesamten Cache leeren
wincache_ucache_clear();
echo 'Einträge nach dem Leeren: ';
var_dump(wincache_ucache_exists('user_1')); // bool(false)
} else {
echo 'WinCache-Erweiterung ist nicht verfügbar.';
}
// Wichtig · Fallstricke
Achtung: Das Leeren des gesamten Caches ist eine globale Operation und betrifft alle Anwendungen und Prozesse, die denselben WinCache-Shared-Memory nutzen. In Umgebungen mit mehreren Anwendungen auf einem IIS-Server kann dies unbeabsichtigt Daten anderer Anwendungen entfernen.
Da WinCache ausschließlich für Windows und IIS konzipiert ist, lässt sich Code, der diese Funktion verwendet, nicht ohne Anpassungen auf Linux/Apache-Systemen einsetzen. Es empfiehlt sich, die Existenz der Funktion stets mit function_exists('wincache_ucache_clear') zu prüfen, um Portabilitätsprobleme zu vermeiden.
Ein häufiger Einsatzfall ist ein gesichertes Admin-Skript oder ein Deployment-Hook, das nach dem Einspielen neuer Applikationsdaten den Cache zurücksetzt. Dieses Skript sollte durch Authentifizierung geschützt sein, da ein unbefugter Aufruf die Performance der Anwendung erheblich beeinträchtigen kann.