Start · Sprachen · PHP · Referenz · memcache_delete

memcache_delete

Funktion

Löscht einen Eintrag mit dem angegebenen Schlüssel vom Memcache-Server.

seit PHP 4.0.0 Kategorie: db

Signatur

memcache_delete(Memcache $memcache, string $key, int $timeout = 0): bool

Beschreibung

memcache_delete() entfernt den Eintrag mit dem Schlüssel $key aus dem Memcache-Cache. Die Funktion ist die prozedurale Alternative zur objektorientierten Methode Memcache::delete(). Sie wird typischerweise eingesetzt, wenn ein Datensatz im Cache ungültig geworden ist, z. B. nach einer Datenbankänderung, und neu generiert werden soll.

Der optionale Parameter $timeout legt eine Verzögerung in Sekunden fest, nach der der Eintrag gelöscht wird. In der Praxis wird dieser Wert jedoch selten genutzt, und es wird empfohlen, den Standardwert 0 zu verwenden, da nicht-null-Werte in neueren Memcache-Versionen möglicherweise nicht wie erwartet funktionieren.

Die Funktion gibt true zurück, wenn der Eintrag erfolgreich gelöscht wurde, und false, wenn der Schlüssel nicht existiert oder ein Fehler auftrat. Dies ermöglicht eine einfache Fehlerbehandlung im Anwendungscode.

Parameter

Name Typ Default Beschreibung
$memcache Pflicht Memcache Eine Memcache-Verbindungsressource, die zuvor mit memcache_connect() oder memcache_pconnect() erstellt wurde.
$key Pflicht string Der Schlüssel des zu löschenden Cache-Eintrags.
$timeout int 0 Optionale Verzögerung in Sekunden, bevor der Eintrag gelöscht wird. Der Standardwert 0 bewirkt eine sofortige Löschung. Werte ungleich 0 sollten vermieden werden.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Eintrag erfolgreich gelöscht wurde. Gibt false zurück, wenn der Schlüssel nicht gefunden wurde oder ein Fehler aufgetreten ist.

Beispiele

Cache-Eintrag nach Datenbankänderung löschen

<?php
// Verbindung zum Memcache-Server herstellen
$memcache = memcache_connect('localhost', 11211);

if (!$memcache) {
    die('Verbindung zum Memcache-Server fehlgeschlagen.');
}

// Eintrag speichern
memcache_set($memcache, 'user_42', ['name' => 'Max Mustermann', 'email' => 'max@example.com'], 0, 3600);

// Simulierte Datenbankaktualisierung...
// Nach der Aktualisierung den Cache-Eintrag löschen
$result = memcache_delete($memcache, 'user_42');

if ($result) {
    echo 'Cache-Eintrag erfolgreich gelöscht.';
} else {
    echo 'Cache-Eintrag konnte nicht gelöscht werden (nicht vorhanden?).';
}

memcache_close($memcache);
Cache-Eintrag erfolgreich gelöscht.

Mehrere Cache-Einträge selektiv löschen

<?php
$memcache = memcache_connect('localhost', 11211);

if (!$memcache) {
    die('Verbindung zum Memcache-Server fehlgeschlagen.');
}

// Mehrere Einträge speichern
$keys = ['product_1', 'product_2', 'product_3'];
foreach ($keys as $key) {
    memcache_set($memcache, $key, 'Produktdaten für ' . $key, 0, 600);
}

// Nur product_2 ist veraltet und soll gelöscht werden
$keyToDelete = 'product_2';
if (memcache_delete($memcache, $keyToDelete)) {
    echo "Eintrag '{$keyToDelete}' wurde aus dem Cache entfernt.\n";
} else {
    echo "Eintrag '{$keyToDelete}' war nicht im Cache vorhanden.\n";
}

// Prüfen, ob der Eintrag wirklich gelöscht wurde
$value = memcache_get($memcache, $keyToDelete);
var_dump($value);

memcache_close($memcache);
Eintrag 'product_2' wurde aus dem Cache entfernt. bool(false)

// Wichtig · Fallstricke

Veraltete Erweiterung: Die memcache-Erweiterung gilt als veraltet. Für neue Projekte wird die Verwendung der memcached-Erweiterung empfohlen, die eine umfangreichere und stabilere API bietet und aktiv gepflegt wird.

Timeout-Parameter: Der Parameter $timeout wird in manchen Memcache-Serverversionen ignoriert oder verhält sich unerwartet. Um unvorhergesehenes Verhalten zu vermeiden, sollte stets der Standardwert 0 verwendet werden.

Rückgabewert prüfen: Da false zurückgegeben wird, wenn der Schlüssel nicht existiert, sollte der Rückgabewert nicht zur Fehlerdiagnose genutzt werden, ohne den Kontext zu kennen — ein nicht vorhandener Schlüssel ist oft kein echtes Fehlerszenario.