Start · Sprachen · PHP · Referenz · SolrPingResponse

SolrPingResponse

Klasse

Stellt eine Antwort auf eine Ping-Anfrage (<code>SolrClient::ping()</code>) an einen Apache-Solr-Server dar.

seit PHP 0.9.2 Kategorie: db

Signatur

class SolrPingResponse extends SolrResponse

Beschreibung

SolrPingResponse ist eine spezialisierte Antwortklasse, die zurückgegeben wird, wenn eine Ping-Anfrage über SolrClient::ping() an einen Solr-Server gesendet wird. Sie erbt von SolrResponse und stellt somit alle Methoden zur Verfügung, um den HTTP-Status, die rohe Antwort sowie das geparste Solr-Dokument auszuwerten.

Typischerweise wird SolrPingResponse eingesetzt, um die Erreichbarkeit und den Betriebszustand eines Solr-Servers zu prüfen, bevor aufwändige Such- oder Indizierungsoperationen durchgeführt werden. Damit eignet sie sich besonders für Health-Checks und Monitoring-Szenarien in produktiven Anwendungen.

Über die geerbte Methode getResponse() lässt sich das geparste Antwortobjekt abrufen, das den Ping-Status enthält. Mit getHttpStatus() kann der HTTP-Statuscode geprüft werden, um sicherzustellen, dass der Server ordnungsgemäß antwortet. Wird eine Ausnahme geworfen oder ein Fehler-Statuscode zurückgegeben, ist der Server nicht erreichbar.

Hinweis: Die Klasse besitzt keinen öffentlichen Konstruktor und wird ausschließlich als Rückgabewert von SolrClient::ping() erzeugt. Eine direkte Instanziierung ist nicht vorgesehen.

Beispiele

Erreichbarkeit des Solr-Servers prüfen

<?php
$options = [
    'hostname' => 'localhost',
    'port'     => 8983,
    'path'     => '/solr/mycore',
];

$client = new SolrClient($options);

try {
    /** @var SolrPingResponse $pingResponse */
    $pingResponse = $client->ping();

    $httpStatus = $pingResponse->getHttpStatus();
    echo 'HTTP-Status: ' . $httpStatus . PHP_EOL;

    if ($httpStatus === 200) {
        echo 'Solr-Server ist erreichbar und betriebsbereit.' . PHP_EOL;
    } else {
        echo 'Unerwarteter HTTP-Status: ' . $httpStatus . PHP_EOL;
    }
} catch (SolrClientException $e) {
    echo 'Solr-Server nicht erreichbar: ' . $e->getMessage() . PHP_EOL;
}
HTTP-Status: 200 Solr-Server ist erreichbar und betriebsbereit.

Rohe Serverantwort und Ping-Status auswerten

<?php
$options = [
    'hostname' => 'localhost',
    'port'     => 8983,
    'path'     => '/solr/mycore',
];

$client = new SolrClient($options);

try {
    $pingResponse = $client->ping();

    // Rohe XML/JSON-Antwort des Solr-Servers
    $rawResponse = $pingResponse->getRawResponse();
    echo 'Rohantwort:' . PHP_EOL . $rawResponse . PHP_EOL;

    // Geparste Antwort als SolrObject
    $response = $pingResponse->getResponse();
    if (isset($response->status)) {
        echo 'Ping-Status laut Solr: ' . $response->status . PHP_EOL;
    }
} catch (SolrClientException $e) {
    echo 'Fehler beim Ping: ' . $e->getMessage() . PHP_EOL;
}
Rohantwort: {"responseHeader":{"status":0,"QTime":1},"status":"OK"} Ping-Status laut Solr: OK

// Wichtig · Fallstricke

Keine direkte Instanziierung: SolrPingResponse darf nicht manuell mit new erzeugt werden. Objekte dieser Klasse werden ausschließlich intern von SolrClient::ping() erstellt und zurückgegeben.

Ausnahmebehandlung: Wenn der Solr-Server nicht erreichbar ist oder ein Netzwerkfehler auftritt, wirft SolrClient::ping() eine SolrClientException. Diese sollte stets mit einem try-catch-Block abgefangen werden, um Programmabstürze in Produktivsystemen zu verhindern.

PECL-Abhängigkeit: Die gesamte Solr-Erweiterung ist nicht Teil von PHP-Core und muss über PECL installiert werden (pecl install solr). Die Verfügbarkeit kann mit extension_loaded('solr') geprüft werden.