Signatur
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
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.';
}
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.