Signatur
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
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);
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);
// 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.