Signatur
Beschreibung
memcache_close() trennt die bestehende Verbindung zu einem Memcached-Server, die zuvor mit memcache_connect() oder memcache_pconnect() aufgebaut wurde. Die Funktion ist das prozedurale Äquivalent zur Methode Memcache::close().
Im Gegensatz zu persistenten Verbindungen (erstellt mit memcache_pconnect()) werden bei regulären Verbindungen die zugehörigen Ressourcen beim Schließen vollständig freigegeben. Bei persistenten Verbindungen wird die eigentliche TCP-Verbindung durch memcache_close() nicht physisch getrennt, sondern lediglich die PHP-seitige Ressource losgelöst – die Verbindung bleibt im Pool erhalten.
Es empfiehlt sich, nicht mehr benötigte Memcache-Verbindungen explizit zu schließen, besonders in lang laufenden Skripten oder wenn viele Verbindungen gleichzeitig geöffnet werden, um den Ressourcenverbrauch gering zu halten. PHP schließt offene Verbindungen zwar automatisch am Ende eines Skripts, ein explizites Schließen ist jedoch als gute Praxis anzusehen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $memcache Pflicht | Memcache | Das Memcache-Verbindungsobjekt, das zuvor mit memcache_connect() oder memcache_pconnect() erzeugt wurde. |
Rückgabewert
true zurück, wenn die Verbindung erfolgreich geschlossen wurde, andernfalls false.Beispiele
Verbindung öffnen, Wert lesen und Verbindung schließen
<?php
// Verbindung zum Memcached-Server herstellen
$memcache = memcache_connect('localhost', 11211);
if ($memcache === false) {
die('Verbindung fehlgeschlagen!');
}
// Einen Wert im Cache speichern
memcache_set($memcache, 'benutzername', 'Max Mustermann', 0, 3600);
// Wert aus dem Cache lesen
$wert = memcache_get($memcache, 'benutzername');
echo 'Gespeicherter Wert: ' . $wert . PHP_EOL;
// Verbindung explizit schließen
memcache_close($memcache);
echo 'Verbindung geschlossen.' . PHP_EOL;
Objektorientierter Vergleich mit memcache_close()
<?php
// Prozedurale Variante
$mc = memcache_connect('127.0.0.1', 11211);
memcache_set($mc, 'sitzung', 'aktiv', 0, 600);
$ergebnis = memcache_close($mc);
var_dump($ergebnis);
// Objektorientierte Äquivalente
$mcObj = new Memcache();
$mcObj->connect('127.0.0.1', 11211);
$mcObj->set('sitzung', 'aktiv', 0, 600);
$ergebnis2 = $mcObj->close();
var_dump($ergebnis2);
// Wichtig · Fallstricke
Persistente Verbindungen: Bei Verbindungen, die mit memcache_pconnect() erstellt wurden, schließt memcache_close() die physische Verbindung nicht. Die Verbindung verbleibt im Verbindungspool und wird beim nächsten Aufruf von memcache_pconnect() wiederverwendet. Dieses Verhalten entspricht dem von mysql_pconnect().
Erweiterungsstatus: Die Memcache-Erweiterung (PECL memcache) sollte nicht mit der neueren Memcached-Erweiterung (PECL memcached) verwechselt werden. Für neue Projekte wird die Verwendung der Memcached-Erweiterung empfohlen, da diese aktiver gepflegt wird und mehr Funktionen bietet.