Start · Sprachen · PHP · Referenz · rrdc_disconnect

rrdc_disconnect

Funktion

Schließt eine offene Verbindung zum RRD-Caching-Daemon (rrdcached).

Kategorie: misc

Signatur

rrdc_disconnect(): void

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

Typ
void
Beschreibung
Die Funktion gibt keinen Wert zurück.

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;
}
RRD-Datei erfolgreich aktualisiert. Verbindung zum rrdcached getrennt.

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;
Zyklus 0: Wert 87 geschrieben. Zyklus 1: Wert 143 geschrieben. Zyklus 2: Wert 61 geschrieben. Alle Zyklen abgeschlossen, Verbindung geschlossen.

// 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).