Start · Sprachen · PHP · Referenz · memcache_close

memcache_close

Funktion

Schließt die Verbindung zu einem Memcached-Server und gibt die verwendeten Ressourcen frei.

seit PHP 2.0.0 Kategorie: db

Signatur

memcache_close(Memcache $memcache): bool

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

Typ
bool
Beschreibung
Gibt 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;
Gespeicherter Wert: Max Mustermann Verbindung geschlossen.

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);
bool(true) bool(true)

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