Signatur
Beschreibung
memcache_connect() ist die prozedurale Variante des Memcache-Clients und stellt eine Verbindung zu einem Memcached-Server her. Die Funktion gibt bei Erfolg ein Memcache-Objekt zurück, mit dem anschließend Daten gespeichert, abgerufen oder gelöscht werden können. Diese Funktion ist das prozedurale Äquivalent zu Memcache::connect().
Die Verbindung bleibt für die Dauer des PHP-Skripts offen und wird beim Skriptende automatisch geschlossen. Anders als persistente Verbindungen (memcache_pconnect()) wird bei jedem Aufruf von memcache_connect() eine neue Verbindung aufgebaut, was besonders in kurz laufenden Skripten sinnvoll ist.
Typische Einsatzgebiete sind das Cachen von Datenbankabfragen, Session-Daten oder häufig abgerufenen API-Antworten, um die Antwortzeiten von Webanwendungen zu verbessern und Backend-Systeme zu entlasten.
Hinweis: Die memcache-Erweiterung ist veraltet. Für aktuelle PHP-Projekte wird die neuere memcached-Erweiterung (mit d am Ende) empfohlen, die das binäre Protokoll und weitere moderne Features unterstützt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $host Pflicht | string | Hostname oder IP-Adresse des Memcached-Servers. Alternativ kann ein Unix-Socket-Pfad angegeben werden, z. B. /var/run/memcached/memcached.sock (dann muss port auf 0 gesetzt werden). |
|
| $port | int | 11211 | TCP-Port, auf dem der Memcached-Server lauscht. Der Standardwert ist 11211. Bei Unix-Socket-Verbindungen muss dieser Wert auf 0 gesetzt werden. |
| $timeout | int | 1 | Verbindungs-Timeout in Sekunden. Gibt an, wie lange auf eine Verbindungsantwort gewartet wird, bevor ein Fehler zurückgegeben wird. Der Standardwert beträgt 1 Sekunde. |
Rückgabewert
Memcache-Objekt zurück, mit dem weitergehende Operationen (Lesen, Schreiben, Löschen) auf dem Server ausgeführt werden können. Bei einem Verbindungsfehler wird false zurückgegeben.Beispiele
Einfache Verbindung und Datenzwischenspeicherung
<?php
// Verbindung zum Memcached-Server aufbauen
$memcache = memcache_connect('localhost', 11211);
if ($memcache === false) {
die('Verbindung zum Memcached-Server fehlgeschlagen.');
}
// Wert im Cache speichern (Schlüssel, Flag, Ablaufzeit in Sekunden, Wert)
memcache_set($memcache, 'begruessung', 'Hallo, Welt!', 0, 3600);
// Wert aus dem Cache abrufen
$wert = memcache_get($memcache, 'begruessung');
echo $wert; // Hallo, Welt!
// Verbindung schließen
memcache_close($memcache);
Datenbankabfrage mit Memcache-Cache
<?php
$memcache = memcache_connect('127.0.0.1', 11211);
if ($memcache === false) {
error_log('Memcache nicht erreichbar, fahre ohne Cache fort.');
$memcache = null;
}
$cacheKey = 'artikel_liste_v1';
$artikel = ($memcache !== null) ? memcache_get($memcache, $cacheKey) : false;
if ($artikel === false) {
// Datenbank-Abfrage simulieren
$artikel = [
['id' => 1, 'titel' => 'PHP-Grundlagen'],
['id' => 2, 'titel' => 'Memcache im Einsatz'],
];
if ($memcache !== null) {
// Ergebnis für 10 Minuten cachen
memcache_set($memcache, $cacheKey, $artikel, 0, 600);
}
echo "Daten aus Datenbank geladen.\n";
} else {
echo "Daten aus Cache geladen.\n";
}
foreach ($artikel as $item) {
echo $item['id'] . ': ' . $item['titel'] . "\n";
}
if ($memcache !== null) {
memcache_close($memcache);
}
// Wichtig · Fallstricke
Sicherheitshinweis: Memcached bietet standardmäßig keine Authentifizierung. Der Server sollte niemals direkt aus dem Internet erreichbar sein. Binden Sie den Memcached-Prozess ausschließlich an localhost oder ein internes Netzwerkinterface (-l 127.0.0.1).
Veraltete Erweiterung: Die memcache-PECL-Erweiterung (ohne d) erhält kaum noch Updates. Für neue Projekte sollte die memcached-Erweiterung verwendet werden, die u. a. das binäre Protokoll, SASL-Authentifizierung und konsistentes Hashing unterstützt.
Persistente Verbindungen: Wird dieselbe Verbindung in einem Dauerbetrieb (z. B. FPM-Worker) häufig benötigt, sollte memcache_pconnect() genutzt werden, um den Verbindungsaufbau-Overhead zu reduzieren.