Start · Sprachen · PHP · Referenz · wincache_ucache_exists

wincache_ucache_exists

Funktion

Prüft, ob eine Variable mit dem angegebenen Schlüssel im WinCache User-Cache vorhanden ist.

seit PHP 1.1.0 Kategorie: misc

Signatur

wincache_ucache_exists(string $key): bool

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 true zurück, wenn der Schlüssel existiert und nicht abgelaufen ist.
  • Gibt false zurü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

Typ
bool
Beschreibung
Gibt 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...';
}
Cache-Eintrag gefunden, lese Daten...Max Mustermann

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';
}
Feature ist deaktiviert (Wert: false)

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