Start · Sprachen · PHP · Referenz · wincache_ucache_clear

wincache_ucache_clear

Funktion

Löscht den gesamten Inhalt des WinCache User-Caches und gibt alle belegten Ressourcen frei.

seit PHP 1.1.0 Kategorie: misc

Signatur

wincache_ucache_clear(): bool

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

Typ
bool
Beschreibung
Gibt 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.';
}
WinCache User-Cache wurde erfolgreich geleert.

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.';
}
Einträge vor dem Leeren: bool(true) Einträge nach dem Leeren: bool(false)

// 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.