Signatur
Beschreibung
rrdc_disconnect() beendet eine zuvor mit rrdc_connect() oder implizit geöffnete Verbindung zum RRD-Caching-Daemon (rrdcached). Der rrdcached ist ein Daemon, der Schreibzugriffe auf RRD-Dateien puffert, um I/O-Last zu reduzieren.
Nach dem Aufruf dieser Funktion werden alle gepufferten Daten nicht automatisch geleert – es handelt sich lediglich um ein sauberes Schließen des Sockets. Soll sichergestellt werden, dass alle gepufferten Daten auf die Festplatte geschrieben werden, sollte vorher rrd_update() bzw. ein entsprechender Flush-Aufruf erfolgen.
In langlebigen PHP-Prozessen (z. B. CLI-Scripts oder Daemons) ist es gute Praxis, die Verbindung nach Abschluss aller RRD-Operationen explizit zu schließen, um Ressourcen freizugeben und verwaiste Socket-Verbindungen zu vermeiden.
Rückgabewert
Beispiele
Verbindung zum rrdcached herstellen, Daten aktualisieren und Verbindung schließen
<?php
// Verbindung zum RRD-Caching-Daemon herstellen
if (rrdc_connect('/var/run/rrdcached.sock') === true) {
// RRD-Datei aktualisieren
$result = rrd_update('/var/lib/rrd/traffic.rrd', ['N:42:100']);
if ($result === true) {
echo "RRD-Datei erfolgreich aktualisiert." . PHP_EOL;
} else {
echo "Fehler beim Aktualisieren: " . rrd_error() . PHP_EOL;
}
// Verbindung sauber schließen
rrdc_disconnect();
echo "Verbindung zum rrdcached getrennt." . PHP_EOL;
} else {
echo "Verbindung zum rrdcached fehlgeschlagen." . PHP_EOL;
}
Verwendung in einem CLI-Daemon mit mehreren Update-Zyklen
<?php
// Verbindung einmalig aufbauen
rrdc_connect('/var/run/rrdcached.sock');
$iterations = 3;
for ($i = 0; $i < $iterations; $i++) {
$value = rand(10, 200);
rrd_update('/var/lib/rrd/sensor.rrd', ['N:' . $value]);
echo "Zyklus $i: Wert $value geschrieben." . PHP_EOL;
sleep(1);
}
// Am Ende des Scripts Verbindung freigeben
rrdc_disconnect();
echo "Alle Zyklen abgeschlossen, Verbindung geschlossen." . PHP_EOL;
// Wichtig · Fallstricke
Hinweis: rrdc_disconnect() leert nicht den internen Schreibpuffer des rrdcached. Wenn sichergestellt werden soll, dass alle gepufferten Werte tatsächlich in die RRD-Dateien geschrieben wurden, sollte vor dem Trennen ein expliziter Flush durchgeführt werden (z. B. über das rrdcached-Protokoll). Andernfalls kann es bei einem unerwarteten Daemon-Neustart zu Datenverlust kommen.
Die Funktion gehört zur PECL-Erweiterung rrd und ist nicht in der PHP-Standardinstallation enthalten. Sie muss separat installiert werden (pecl install rrd).