Start · Sprachen · PHP · Referenz · rrd_last

rrd_last

Funktion

Gibt den Unix-Zeitstempel des zuletzt gespeicherten Datenpunkts in einer RRD-Datei zurück.

Kategorie: misc

Signatur

rrd_last(string $file): int|false

Beschreibung

rrd_last() liest aus einer bestehenden RRD-Datei (Round Robin Database) den Zeitstempel des jüngsten eingetragenen Datenpunkts und gibt ihn als Unix-Zeitstempel zurück. Dies ist nützlich, um festzustellen, wann zuletzt Daten in die Datenbank geschrieben wurden.

Die Funktion ist Teil der RRDtool-Erweiterung für PHP und setzt voraus, dass die Erweiterung rrd installiert und aktiviert ist. RRD-Datenbanken werden häufig für zeitreihenbezogene Daten wie Netzwerk-Traffic, Systemauslastung oder Sensorwerte eingesetzt.

Ein typischer Anwendungsfall ist die Prüfung, ob eine Datenquelle noch aktiv Daten liefert: Liegt der zurückgegebene Zeitstempel zu weit in der Vergangenheit, kann auf einen Ausfall oder eine Unterbrechung der Datenerfassung hingewiesen werden.

Im Fehlerfall – etwa wenn die angegebene Datei nicht existiert oder beschädigt ist – gibt die Funktion false zurück. Fehlerdetails können dann mit rrd_error() abgerufen werden.

Parameter

Name Typ Default Beschreibung
$file Pflicht string Pfad zur RRD-Datei (.rrd), aus der der Zeitstempel des letzten Datenpunkts ausgelesen werden soll.

Rückgabewert

Typ
int|false
Beschreibung
Gibt den Unix-Zeitstempel (Sekunden seit dem 1. Januar 1970 UTC) des zuletzt gespeicherten Datenpunkts zurück. Bei einem Fehler wird false zurückgegeben; die genaue Fehlermeldung kann mit rrd_error() abgerufen werden.

Beispiele

Letzten Datenpunkt einer RRD-Datei abfragen

<?php
$rrdFile = '/var/lib/rrd/traffic.rrd';

$lastTimestamp = rrd_last($rrdFile);

if ($lastTimestamp === false) {
    echo 'Fehler beim Lesen der RRD-Datei: ' . rrd_error();
} else {
    echo 'Letzter Datenpunkt: ' . date('d.m.Y H:i:s', $lastTimestamp) . PHP_EOL;
}
Letzter Datenpunkt: 15.06.2024 14:32:00

Prüfen ob die Datenerfassung noch aktiv ist

<?php
$rrdFile = '/var/lib/rrd/cpu_load.rrd';
$maxAlterInSekunden = 300; // 5 Minuten

$lastTimestamp = rrd_last($rrdFile);

if ($lastTimestamp === false) {
    echo 'Fehler: ' . rrd_error();
} else {
    $alter = time() - $lastTimestamp;
    if ($alter > $maxAlterInSekunden) {
        echo 'WARNUNG: Letzter Datenpunkt ist ' . $alter . ' Sekunden alt – möglicher Ausfall!' . PHP_EOL;
    } else {
        echo 'Datenerfassung aktiv. Letzter Eintrag vor ' . $alter . ' Sekunden.' . PHP_EOL;
    }
}
Datenerfassung aktiv. Letzter Eintrag vor 42 Sekunden.

// Wichtig · Fallstricke

Die Funktion steht nur zur Verfügung, wenn die PHP-Erweiterung rrd installiert ist (z. B. über PECL: pecl install rrd). Ohne diese Erweiterung führt der Aufruf zu einem fatalen Fehler.

Der zurückgegebene Zeitstempel entspricht dem tatsächlich gespeicherten Zeitstempel in der RRD-Datei, der je nach Aktualisierungsintervall und Rundung von der aktuellen Uhrzeit abweichen kann. RRDtool rundet Zeitstempel auf das nächste volle Intervall.

Wird false zurückgegeben, sollte stets rrd_error() aufgerufen werden, um die Ursache des Fehlers zu ermitteln.