Start · Sprachen · PHP · Referenz · VarnishException

VarnishException

Klasse

Ausnahmeklasse der PHP-Varnish-Erweiterung, die bei Fehlern im Umgang mit dem Varnish-Cache-Daemon ausgelöst wird.

Kategorie: error

Signatur

class VarnishException extends RuntimeException

Beschreibung

VarnishException ist die spezifische Ausnahmeklasse der PECL-Erweiterung varnish. Sie wird ausgelöst, wenn Operationen auf einem VarnishAdmin- oder VarnishStat-Objekt fehlschlagen – etwa wenn die Verbindung zum Varnish-Management-Port nicht hergestellt werden kann, die Authentifizierung scheitert oder ein ungültiger Befehl übermittelt wird.

Da VarnishException von RuntimeException erbt, stehen alle üblichen Methoden wie getMessage(), getCode(), getFile() und getTrace() zur Verfügung. Der Fehlercode entspricht dabei in der Regel dem vom Varnish-Daemon zurückgelieferten Statuscode.

Es empfiehlt sich, alle Aufrufe von Varnish-Methoden in einen try/catch-Block zu kapseln und VarnishException explizit abzufangen, um Verbindungsprobleme oder Konfigurationsfehler sauber behandeln zu können, ohne die gesamte Anwendung zum Absturz zu bringen.

Beispiele

VarnishException beim Verbindungsaufbau abfangen

<?php
try {
    $varnish = new VarnishAdmin([
        VARNISH_CONFIG_HOST => '127.0.0.1',
        VARNISH_CONFIG_PORT => 6082,
        VARNISH_CONFIG_SECRET => 'geheimes-passwort',
        VARNISH_CONFIG_TIMEOUT => 5,
    ]);
    $varnish->connect();
    $varnish->auth();
    echo "Verbindung zu Varnish erfolgreich hergestellt.\n";
} catch (VarnishException $e) {
    echo "Varnish-Fehler (Code " . $e->getCode() . "): " . $e->getMessage() . "\n";
}
Varnish-Fehler (Code 107): Could not connect to the Varnish management port.

Cache-Bereinigung mit Fehlerbehandlung

<?php
try {
    $varnish = new VarnishAdmin([
        VARNISH_CONFIG_HOST => '127.0.0.1',
        VARNISH_CONFIG_PORT => 6082,
        VARNISH_CONFIG_SECRET => 'geheimes-passwort',
        VARNISH_CONFIG_TIMEOUT => 5,
        VARNISH_CONFIG_COMPAT => 4,
    ]);
    $varnish->connect();
    $varnish->auth();
    // Alle gecachten Objekte mit dem Tag 'news' bereinigen
    $result = $varnish->ban('obj.http.X-Cache-Tags ~ news');
    echo "Cache-Bereinigung erfolgreich: " . $result . "\n";
} catch (VarnishException $e) {
    // Fehler protokollieren, aber Anwendung weiter laufen lassen
    error_log(
        sprintf(
            '[Varnish] Fehler beim Cache-Bereinigen: [%d] %s in %s:%d',
            $e->getCode(),
            $e->getMessage(),
            $e->getFile(),
            $e->getLine()
        )
    );
    echo "Cache-Bereinigung fehlgeschlagen – Anwendung läuft weiter.\n";
}
Cache-Bereinigung fehlgeschlagen – Anwendung läuft weiter.

// Wichtig · Fallstricke

Hinweis zur Erweiterung: VarnishException ist Teil der PECL-Erweiterung varnish, die separat installiert werden muss (pecl install varnish). Die Klasse steht nur zur Verfügung, wenn diese Erweiterung geladen ist.

Fehlercode: Der von getCode() gelieferte Wert entspricht dem Varnish-internen Statuscode (z. B. 107 für Verbindungsfehler, 400 für ungültige Anfragen). Diese Codes können je nach Varnish-Version variieren.

Kompatibilität: Die Varnish-PECL-Erweiterung unterstützt Varnish 3.x und 4.x, jedoch nicht alle neueren Versionen (5+). Prüfe die Kompatibilität mit deiner eingesetzten Varnish-Version, bevor du die Erweiterung einsetzt.