Signatur
Beschreibung
SolrGenericResponse ist eine konkrete Implementierung von SolrResponse und wird als Rückgabetyp von Solr-Anfragen verwendet, die keine spezialisierte Antwortklasse besitzen. Sie kapselt die rohe Antwort des Solr-Servers und stellt Methoden bereit, um den HTTP-Status, den Antwort-Header sowie den eigentlichen Antwort-Body abzurufen.
Die Klasse wird typischerweise von Methoden wie SolrClient::ping() oder SolrClient::commit() zurückgegeben, also immer dann, wenn Solr eine Antwort ohne strukturierte Suchergebnisse liefert. Der Antwort-Body kann als SolrObject oder als serialisierter String abgerufen werden.
Über die geerbten Methoden von SolrResponse lassen sich der HTTP-Statuscode, Fehlerinformationen sowie die geparste Antwort als PHP-Objekt oder XML-String abrufen. Dies erleichtert die Fehlerbehandlung und das Logging bei Solr-Operationen erheblich.
Die Klasse kann nicht manuell instanziiert werden – Instanzen werden ausschließlich von der Solr-Extension intern erzeugt und als Rückgabewerte der entsprechenden SolrClient-Methoden zurückgeliefert.
Beispiele
Ping an den Solr-Server und Auswertung der generischen Antwort
<?php
$options = [
'hostname' => 'localhost',
'port' => 8983,
'path' => '/solr/mycore',
];
$client = new SolrClient($options);
try {
/** @var SolrGenericResponse $response */
$response = $client->ping();
// HTTP-Statuscode der Solr-Antwort prüfen
echo 'HTTP-Status: ' . $response->getHttpStatus() . PHP_EOL;
// Antwort als SolrObject abrufen
$responseObject = $response->getResponse();
echo 'Antwort-Status: ' . $responseObject->responseHeader->status . PHP_EOL;
// Antwort als serialisierten String ausgeben
echo 'Serialisiert: ' . $response->getDigestedResponse() . PHP_EOL;
} catch (SolrClientException $e) {
echo 'Solr-Clientfehler: ' . $e->getMessage() . PHP_EOL;
} catch (SolrServerException $e) {
echo 'Solr-Serverfehler: ' . $e->getMessage() . PHP_EOL;
}
Commit-Operation und Auswertung der generischen Antwort
<?php
$options = [
'hostname' => 'localhost',
'port' => 8983,
'path' => '/solr/mycore',
];
$client = new SolrClient($options);
try {
/** @var SolrGenericResponse $response */
$response = $client->commit();
// Prüfen ob ein Fehler aufgetreten ist
if ($response->getHttpStatus() === 200) {
echo 'Commit erfolgreich.' . PHP_EOL;
$data = $response->getResponse();
echo 'QTime: ' . $data->responseHeader->QTime . ' ms' . PHP_EOL;
} else {
echo 'Fehler beim Commit: ' . $response->getHttpStatusMessage() . PHP_EOL;
}
} catch (SolrClientException $e) {
echo 'Verbindungsfehler: ' . $e->getMessage() . PHP_EOL;
}
// Wichtig · Fallstricke
Nicht instanziierbar: SolrGenericResponse-Objekte dürfen nicht manuell mit new erzeugt werden. Sie werden ausschließlich intern von der Solr-Extension erstellt.
Fehlerbehandlung: Immer getHttpStatus() prüfen, bevor die eigentliche Antwort verarbeitet wird. Ein HTTP-Status ungleich 200 deutet auf einen Fehler hin, der über getHttpStatusMessage() genauer beschrieben werden kann.
Extension erforderlich: Diese Klasse gehört zur PECL-Extension solr und steht nur zur Verfügung, wenn diese installiert und aktiviert ist. Die Extension kann mit pecl install solr installiert werden.