Start · Sprachen · PHP · Referenz · memcache_connect

memcache_connect

Funktion

Öffnet eine Verbindung zu einem Memcached-Server und gibt ein <code>Memcache</code>-Objekt zurück.

seit PHP 2.0.0 Kategorie: db

Signatur

memcache_connect(string $host, int $port = 11211, int $timeout = 1): Memcache|false

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

Typ
Memcache|false
Beschreibung
Gibt bei Erfolg ein 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);
Hallo, Welt!

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);
}
Daten aus Datenbank geladen. 1: PHP-Grundlagen 2: Memcache im Einsatz

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