Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

Letzte Änderung einer Datei ermitteln mit filemtime()

Sie befinden sich: Home > Php Tutorial > Letzte Änderung einer...

Letzte Aenderung einer Datei ermitteln mit filemtime()


Eintrag am:  12.08.2010
Hits / Besucher:  13376
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Wer wissen möchte, wann eine Datei zuletzt geändert wurde, kann in PHP die Funktion filemtime() verwenden. Sie gibt einen Unix-Timestamp zurück, der sich mit date() in ein lesbares Format umwandeln lässt.

Grundlegende Verwendung

Die Funktion erwartet einen Dateipfad und gibt den Zeitpunkt der letzten Änderung als Unix-Timestamp zurück:

<?php

$datei = 'config.php';

if (file_exists($datei)) {
$timestamp = filemtime($datei);
echo date('d.m.Y H:i:s', $timestamp);
/* z.B.: 23.02.2026 14:30:00 */
}
?>

Der Unix-Timestamp ist die Anzahl der Sekunden seit dem 1. Januar 1970. Mit date() wird er in ein lesbares Datum umgewandelt. Die Prüfung mit file_exists() verhindert eine Warnung, falls die Datei nicht vorhanden ist.

Praxisbeispiel: Einfacher Datei-Cache

Ein häufiger Einsatz von filemtime() ist die Prüfung, ob eine Cache-Datei noch aktuell ist:

<?php

$cacheDatei = '/tmp/daten_cache.json';
$maxAlter = 3600; /* Cache gilt 1 Stunde */

if (file_exists($cacheDatei)
&& (time() - filemtime($cacheDatei)) < $maxAlter
) {
/* Cache ist noch frisch */
$daten = json_decode(
file_get_contents($cacheDatei),
true
);
} else {
/* Cache ist abgelaufen oder fehlt */
$daten = ladeDatenVonDerApi();
file_put_contents(
$cacheDatei,
json_encode($daten)
);
}
?>

Durch den Vergleich von time() (jetzt) mit filemtime() (letzte Änderung) wird das Alter der Cache-Datei in Sekunden berechnet. Ist es größer als $maxAlter, werden die Daten neu geladen.

Cache-Falle: clearstatcache()

PHP speichert die Ergebnisse von Dateisystem-Funktionen wie filemtime() intern zwischen. Wenn eine Datei während eines Skriptlaufs geändert wird, kann filemtime() trotzdem den alten Wert liefern. Mit clearstatcache() wird der interne Cache geleert:

<?php

echo filemtime('daten.txt');
/* z.B.: 1740000000 */

/* Datei wird extern geaendert... */

echo filemtime('daten.txt');
/* Liefert immer noch 1740000000 (gecacht!) */

clearstatcache(true, 'daten.txt');

echo filemtime('daten.txt');
/* Jetzt der aktuelle Wert */
?>

Der erste Parameter true leert den Cache für realpath, der zweite schränkt die Löschung auf eine bestimmte Datei ein. Das ist performanter als den gesamten Cache zu leeren.

Verwandte Funktionen

Neben filemtime() gibt es zwei verwandte Funktionen für andere Zeitstempel:

<?php

$datei = 'beispiel.txt';

/* Letzte Inhaltsaenderung */
echo date('d.m.Y', filemtime($datei));

/* Letzte Statusaenderung
(Rechte, Besitzer etc.) */
echo date('d.m.Y', filectime($datei));

/* Letzter Lesezugriff */
echo date('d.m.Y', fileatime($datei));
?>

filemtime() ist in den meisten Fällen die richtige Wahl, da sie den Zeitpunkt der letzten inhaltlichen Änderung zurückgibt. filectime() reagiert zusätzlich auf Änderungen an Dateiberechtigungen und Metadaten. fileatime() liefert den letzten Lesezugriff, ist aber auf vielen Systemen deaktiviert oder ungenau.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.