Signatur
Beschreibung
memcache_flush() ist die prozedurale Variante von Memcache::flush() und weist den Memcache-Server an, alle gespeicherten Schlüssel-Wert-Paare sofort als abgelaufen zu markieren. Der Speicher wird damit für neue Einträge freigegeben, ohne dass der Server neu gestartet werden muss.
Es ist wichtig zu verstehen, dass memcache_flush() die Daten im Speicher nicht physisch löscht, sondern lediglich alle bestehenden Einträge als ungültig markiert. Der Speicher wird dann schrittweise durch neue Schreiboperationen wiederverwendet. Für den Client sind alle bisherigen Schlüssel nach dem Aufruf nicht mehr abrufbar.
Diese Funktion eignet sich besonders, wenn der gesamte Cache nach einem Deployment, einer Datenmigration oder einem Fehlerfall vollständig geleert werden soll. Sie sollte nicht in Umgebungen verwendet werden, in denen mehrere Anwendungen denselben Memcache-Server nutzen, da dadurch auch die Caches anderer Anwendungen unwiederbringlich geleert werden.
Die Funktion gehört zur älteren Memcache-Erweiterung (PECL memcache). Für neue Projekte empfiehlt sich die neuere Memcached-Erweiterung mit Memcached::flush().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $memcache_obj Pflicht | Memcache | Eine aktive Memcache-Verbindungsressource, die zuvor mit memcache_connect() oder memcache_pconnect() erstellt wurde. |
Rückgabewert
true zurück, wenn der Flush-Befehl erfolgreich an den Server übermittelt wurde, andernfalls false (z. B. bei Verbindungsfehlern).Beispiele
Gesamten Memcache-Cache leeren
<?php
// Verbindung zum Memcache-Server herstellen
$memcache = memcache_connect('127.0.0.1', 11211);
if (!$memcache) {
die('Verbindung zum Memcache-Server fehlgeschlagen.');
}
// Einige Werte speichern
memcache_set($memcache, 'user_1', 'Alice', 0, 3600);
memcache_set($memcache, 'user_2', 'Bob', 0, 3600);
echo memcache_get($memcache, 'user_1'); // Alice
// Gesamten Cache leeren
if (memcache_flush($memcache)) {
echo 'Cache erfolgreich geleert.' . PHP_EOL;
} else {
echo 'Fehler beim Leeren des Caches.' . PHP_EOL;
}
// Wert ist nun nicht mehr vorhanden
$result = memcache_get($memcache, 'user_1');
var_dump($result); // bool(false)
memcache_close($memcache);
Cache nach einem Deployment leeren (OOP-Stil mit flush())
<?php
// Objektorientierte Alternative mit derselben Wirkung
$memcache = new Memcache();
$memcache->connect('127.0.0.1', 11211);
$memcache->set('config_version', '1.0.0', 0, 86400);
// Nach einem Deployment: Cache komplett invalidieren
$flushed = $memcache->flush(); // entspricht memcache_flush($memcache)
if ($flushed) {
echo 'Cache nach Deployment erfolgreich geleert.' . PHP_EOL;
}
$memcache->close();
// Wichtig · Fallstricke
Achtung bei gemeinsam genutzten Servern: memcache_flush() löscht alle Einträge auf dem gesamten Memcache-Server – nicht nur jene der eigenen Anwendung. In Shared-Hosting-Umgebungen oder bei mehreren Applikationen auf demselben Server kann dies schwerwiegende Auswirkungen auf andere Dienste haben.
Verzögerter Effekt: Bei manchen Server-Konfigurationen kann ein optionaler Zeitstempel-Parameter ($timestamp) übergeben werden, der den Flush verzögert. Die prozedurale Variante memcache_flush() unterstützt diesen Parameter jedoch nicht direkt – verwenden Sie in diesem Fall die OOP-Methode Memcache::flush().
Deprecation: Die Memcache-Erweiterung (PECL memcache) gilt als veraltet. Für neue Projekte sollte die Memcached-Erweiterung (PECL memcached) mit Memcached::flush() verwendet werden.