Start · Sprachen · PHP · Referenz · memcache_get_server_status

memcache_get_server_status

Funktion

Liefert den aktuellen Status eines Memcache-Servers (online/offline) als Integer-Wert.

seit PHP 2.0.0 Kategorie: db

Signatur

memcache_get_server_status(Memcache $memcache, string $host, int $port = 11211): int

Beschreibung

memcache_get_server_status() fragt den Status eines bestimmten Servers innerhalb einer Memcache-Verbindung ab. Der Rückgabewert ist eine Ganzzahl: 0 bedeutet, dass der Server als offline gilt, jeder Wert ungleich 0 zeigt an, dass der Server online und erreichbar ist.

Die Funktion ist nützlich, um die Verfügbarkeit einzelner Server in einem Memcache-Pool zu überwachen, etwa um in einer Hochverfügbarkeitsumgebung automatisch auf einen Fallback-Server umzuschalten oder Monitoring-Informationen bereitzustellen.

Sie ist die prozedurale Variante der objektorientierten Methode Memcache::getServerStatus(). Beide Varianten liefern dasselbe Ergebnis und können je nach bevorzugtem Programmierstil eingesetzt werden.

Hinweis: Die Memcache-PECL-Extension (nicht zu verwechseln mit Memcached) gilt als veraltet. Für neue Projekte wird die neuere Memcached-Extension empfohlen, die einen erweiterten Funktionsumfang bietet.

Parameter

Name Typ Default Beschreibung
$memcache Pflicht Memcache Eine aktive Memcache-Verbindungsinstanz, die mit memcache_connect() oder memcache_pconnect() erstellt wurde.
$host Pflicht string Hostname oder IP-Adresse des Memcache-Servers, dessen Status abgefragt werden soll.
$port int 11211 TCP-Port, auf dem der Memcache-Server lauscht. Standardmäßig 11211.

Rückgabewert

Typ
int
Beschreibung
Gibt 0 zurück, wenn der Server als offline markiert ist. Gibt einen Wert ungleich 0 (typischerweise 1) zurück, wenn der Server online und erreichbar ist.

Beispiele

Serverstatus eines einzelnen Servers prüfen

<?php
$memcache = memcache_connect('localhost', 11211);

if ($memcache) {
    $status = memcache_get_server_status($memcache, 'localhost', 11211);

    if ($status !== 0) {
        echo "Server ist ONLINE (Status: $status)" . PHP_EOL;
    } else {
        echo "Server ist OFFLINE" . PHP_EOL;
    }
} else {
    echo "Verbindung konnte nicht hergestellt werden." . PHP_EOL;
}
?>
Server ist ONLINE (Status: 1)

Status mehrerer Server in einem Pool überwachen

<?php
$memcache = new Memcache();
$servers = [
    ['host' => 'cache1.example.com', 'port' => 11211],
    ['host' => 'cache2.example.com', 'port' => 11211],
    ['host' => 'cache3.example.com', 'port' => 11211],
];

foreach ($servers as $server) {
    $memcache->addServer($server['host'], $server['port']);
}

foreach ($servers as $server) {
    $status = memcache_get_server_status($memcache, $server['host'], $server['port']);
    $label = ($status !== 0) ? 'ONLINE' : 'OFFLINE';
    echo "{$server['host']}:{$server['port']} => $label" . PHP_EOL;
}
?>
cache1.example.com:11211 => ONLINE cache2.example.com:11211 => OFFLINE cache3.example.com:11211 => ONLINE

// Wichtig · Fallstricke

Veraltete Extension: Die Memcache-PECL-Extension (pecl/memcache) wird seit Jahren nicht mehr aktiv weiterentwickelt. Für neue Projekte sollte die Memcached-Extension (pecl/memcached) verwendet werden, die auf libmemcached basiert und deutlich mehr Features sowie bessere Performance bietet.

Statuswert beachten: Der zurückgegebene Statuswert spiegelt den internen Zustand wider, den die Extension dem Server zuweist – nicht unbedingt den tatsächlichen Netzwerkstatus in Echtzeit. Ein Server kann als online gelistet sein, auch wenn er kurzzeitig nicht erreichbar ist.

Serverregistrierung erforderlich: Der abgefragte Server muss zuvor mit memcache_add_server() bzw. Memcache::addServer() der Verbindung hinzugefügt worden sein, sonst liefert die Funktion möglicherweise unerwartete Ergebnisse.