Signatur
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
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;
}
?>
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;
}
?>
// 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.