Signatur
Beschreibung
wincache_ucache_exists() überprüft, ob ein Eintrag mit dem angegebenen Schlüssel im WinCache User-Cache existiert. Die Funktion gibt true zurück, wenn der Schlüssel vorhanden und nicht abgelaufen ist, andernfalls false.
Diese Funktion ist besonders nützlich, um vor einem Lese- oder Schreibvorgang zu prüfen, ob ein Cache-Eintrag bereits vorhanden ist – zum Beispiel um doppeltes Schreiben zu vermeiden oder um zwischen einem fehlenden Eintrag und einem Eintrag mit dem Wert false/null zu unterscheiden (da wincache_ucache_get() im Fehlerfall ebenfalls false zurückgibt).
WinCache ist eine PHP-Erweiterung speziell für Windows-Server (IIS). Der User-Cache ermöglicht das persistente Speichern beliebiger PHP-Variablen über mehrere Requests hinweg, ähnlich wie APCu unter Linux. wincache_ucache_exists() greift nur auf den Cache-Speicher zu, ohne die gespeicherten Daten zu deserialisieren, und ist daher sehr performant.
- Gibt
truezurück, wenn der Schlüssel existiert und nicht abgelaufen ist. - Gibt
falsezurück, wenn der Schlüssel nicht vorhanden oder bereits abgelaufen ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $key Pflicht | string | Der Schlüssel (Name) des Cache-Eintrags, dessen Existenz geprüft werden soll. Groß-/Kleinschreibung wird beachtet. |
Rückgabewert
true zurück, wenn ein nicht abgelaufener Eintrag mit dem angegebenen Schlüssel im User-Cache vorhanden ist, andernfalls false.Beispiele
Existenz eines Cache-Eintrags prüfen
<?php
// Wert in den Cache schreiben
wincache_ucache_set('benutzerprofil_42', ['name' => 'Max Mustermann', 'email' => 'max@example.com'], 300);
// Prüfen, ob der Eintrag vorhanden ist
if (wincache_ucache_exists('benutzerprofil_42')) {
echo 'Cache-Eintrag gefunden, lese Daten...';
$profil = wincache_ucache_get('benutzerprofil_42');
echo $profil['name']; // Max Mustermann
} else {
echo 'Kein Cache-Eintrag vorhanden, lade aus Datenbank...';
}
Unterscheidung zwischen fehlendem Eintrag und false-Wert
<?php
// Speichert den Wert false im Cache
wincache_ucache_set('feature_aktiv', false, 600);
// wincache_ucache_get gibt false zurück – unklar ob Eintrag fehlt oder Wert false ist
$wert = wincache_ucache_get('feature_aktiv');
// Sichere Prüfung mit wincache_ucache_exists
if (wincache_ucache_exists('feature_aktiv')) {
// Eintrag existiert, Wert ist tatsächlich false
echo 'Feature ist deaktiviert (Wert: ' . var_export($wert, true) . ')';
} else {
echo 'Kein Cache-Eintrag vorhanden';
}
// Wichtig · Fallstricke
Plattformspezifisch: WinCache ist ausschließlich unter Windows mit dem IIS-Webserver verfügbar. Code, der diese Funktion verwendet, ist nicht portabel auf Linux/Unix-Systeme. Für plattformübergreifende Projekte empfiehlt sich eine Abstraktion über ein Cache-Interface (z. B. PSR-6 oder PSR-16).
Race Condition: Zwischen dem Aufruf von wincache_ucache_exists() und einem nachfolgenden wincache_ucache_get() kann ein Eintrag theoretisch ablaufen (TTL-Ablauf) oder von einem anderen Prozess gelöscht werden. Für atomare Operationen sollte wincache_ucache_get() direkt mit Fehlerprüfung verwendet werden.