Start · Sprachen · PHP · Referenz · getlastmod

getlastmod

Funktion

Gibt den Unix-Zeitstempel der letzten Änderung des aktuell ausgeführten PHP-Skripts zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

getlastmod(): int|false

Beschreibung

getlastmod() ermittelt den Zeitpunkt der letzten Dateiänderung des Hauptskripts, das vom Webserver aufgerufen wird (also die Datei, die den aktuellen Request verarbeitet). Der Rückgabewert ist ein Unix-Zeitstempel, der mit Datumsfunktionen wie date() oder strftime() weiterverarbeitet werden kann.

Diese Funktion ist besonders nützlich, um HTTP-Header für Browser-Caching zu setzen. Indem man den Last-Modified-Header mit dem Änderungsdatum des Skripts sendet, kann man unnötige Anfragen vermeiden und die Performance verbessern, sofern sich der Inhalt ausschließlich aus dem Skript selbst ergibt.

Intern ist getlastmod() eine Abkürzung für filemtime(getenv('SCRIPT_FILENAME')). Das Ergebnis der Dateistatistik wird wie bei anderen Datei-Funktionen zwischengespeichert (Stat-Cache). Wer stets frische Werte benötigt, sollte vorher clearstatcache() aufrufen.

Beachte, dass die Funktion nur das Hauptskript (der eigentliche Einstiegspunkt) berücksichtigt – nicht eingebundene Dateien über include oder require. Wenn sich Änderungen auf Include-Dateien verteilen, muss man deren Änderungszeitpunkte separat mit filemtime() abfragen.

Rückgabewert

Typ
int|false
Beschreibung
Gibt einen Unix-Zeitstempel (Ganzzahl) zurück, der den Zeitpunkt der letzten Änderung des aktuell ausgeführten Skripts darstellt. Im Fehlerfall wird false zurückgegeben.

Beispiele

Letztes Änderungsdatum des Skripts ausgeben

<?php
$lastModified = getlastmod();

if ($lastModified !== false) {
    echo 'Dieses Skript wurde zuletzt geändert am: '
        . date('d.m.Y H:i:s', $lastModified);
} else {
    echo 'Änderungsdatum konnte nicht ermittelt werden.';
}
Dieses Skript wurde zuletzt geändert am: 15.06.2024 10:32:45

HTTP Last-Modified-Header für Browser-Caching setzen

<?php
$lastModified = getlastmod();

if ($lastModified !== false) {
    // HTTP-konformes Datumsformat (RFC 7231)
    $gmDate = gmdate('D, d M Y H:i:s', $lastModified) . ' GMT';

    // Prüfen, ob der Client bereits die aktuelle Version hat
    if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
        $clientDate = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
        if ($clientDate >= $lastModified) {
            header('HTTP/1.1 304 Not Modified');
            exit;
        }
    }

    header('Last-Modified: ' . $gmDate);
    header('Cache-Control: public, max-age=3600');
}

// Eigentliche Seite ausgeben
echo '<html><body><p>Seiteninhalt</p></body></html>';

// Wichtig · Fallstricke

Nur das Hauptskript: getlastmod() liefert ausschließlich das Änderungsdatum des Einstiegspunkts (z. B. index.php), nicht das der eingebundenen Dateien. Bei komplexen Projekten mit vielen Includes sollte man filemtime() für jede relevante Datei einzeln nutzen und das Maximum bilden.

Stat-Cache: PHP cached Dateistatistiken intern. Falls sich eine Datei während der Laufzeit ändern könnte und man einen aktuellen Wert benötigt, ist clearstatcache() vor dem Aufruf empfehlenswert.

CLI-Umgebung: In der Kommandozeile (CLI) funktioniert getlastmod() ebenfalls, da intern $_SERVER['SCRIPT_FILENAME'] verwendet wird, die auch im CLI-Modus gesetzt ist.