Signatur
Beschreibung
VarnishAdmin ist eine PHP-Klasse aus der PECL-Erweiterung varnish, die eine Verbindung zum Varnish-Administrations-Port aufbaut und darüber Cache-Einträge ungültig machen (purgen), Statistiken abfragen sowie den Server konfigurieren kann. Sie spricht das Varnish Management Protocol (VMP) direkt an.
Typische Einsatzfälle sind Content-Delivery-Setups, bei denen PHP-Anwendungen nach einem Datenbankupdate gezielt Cache-Einträge invalidieren müssen, ohne einen vollständigen Cache-Flush durchzuführen. Die Klasse unterstützt sowohl Varnish 2.x als auch neuere Versionen, wobei die Authentifizierung je nach Version unterschiedlich abgewickelt wird.
Für die Verwendung muss die PECL-Erweiterung varnish installiert und in der php.ini geladen sein. Die Verbindungsparameter (Host, Port, Secret) werden über ein VarnishAdmin-Konfigurationsarray im Konstruktor übergeben.
- Verbindung herstellen:
connect()öffnet den Socket zum Varnish-Admin-Port. - Cache invalidieren:
ban()/purge()markieren Objekte als veraltet. - Statistiken lesen:
getParams()liefert aktuelle Konfigurationsparameter.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $args | array | [] | Assoziatives Konfigurations-Array mit optionalen Schlüsseln: host (string, Standard '127.0.0.1'), port (int, Standard 6082), secret (string, Shared Secret für die HMAC-Authentifizierung), timeout (int, Socket-Timeout in Sekunden), version (string, Protokollversion, z. B. '2' oder '3'). |
Beispiele
Verbindung aufbauen und Cache-Einträge per Ban ungültig machen
<?php
// Voraussetzung: PECL-Erweiterung 'varnish' ist installiert
$config = [
'host' => '127.0.0.1',
'port' => 6082,
'secret' => 'mein-geheimes-shared-secret',
'timeout' => 5,
];
try {
$va = new VarnishAdmin($config);
$va->connect();
$va->auth();
// Alle URLs, die mit /news/ beginnen, aus dem Cache entfernen
$banned = $va->ban('req.url ~ ^/news/');
echo $banned ? 'Ban erfolgreich.' : 'Ban fehlgeschlagen.';
} catch (VarnishException $e) {
echo 'Fehler: ' . $e->getMessage();
}
Varnish-Konfigurationsparameter abfragen
<?php
$config = [
'host' => '127.0.0.1',
'port' => 6082,
'secret' => 'mein-geheimes-shared-secret',
];
$va = new VarnishAdmin($config);
$va->connect();
$va->auth();
// Alle aktuellen Parameter des laufenden Varnish-Prozesses auslesen
$params = $va->getParams();
foreach ($params as $key => $value) {
echo $key . ' = ' . $value . PHP_EOL;
}
// Verbindung sauber trennen
$va->disconnect();
// Wichtig · Fallstricke
Sicherheit: Der Varnish-Admin-Port sollte niemals öffentlich erreichbar sein. Stellen Sie sicher, dass die Firewall den Zugang auf 127.0.0.1 oder ein internes Verwaltungsnetz beschränkt. Das secret sollte ausreichend lang und zufällig sein (mindestens 256 Bit Entropie) und nicht im Quellcode gespeichert werden — nutzen Sie Umgebungsvariablen oder einen Secrets-Manager.
Verfügbarkeit: VarnishAdmin ist Teil der PECL-Erweiterung varnish (pecl.php.net/package/varnish) und nicht im PHP-Kern enthalten. Die Klasse ist ab Erweiterungsversion 0.3 verfügbar.
Protokollversionen: Varnish 4+ verwendet eine andere Authentifizierungsreihenfolge als Varnish 2/3. Achten Sie darauf, den version-Parameter korrekt zu setzen, da sonst auth() fehlschlägt.