W3docs

fileatime()

Die Funktion fileatime() gibt den letzten Zugriffszeitpunkt einer Datei als Unix-Zeitstempel zurück. Erfahren Sie Syntax, Rückgabewert und Beispiele.

Was die Funktion fileatime() macht

Die Funktion fileatime() ist eine eingebaute PHP-Funktion, die den letzten Zugriffszeitpunkt einer Datei zurückgibt — also den Moment, zu dem ihr Inhalt zuletzt gelesen wurde. Der Wert wird als ganzzahliger Unix-Zeitstempel zurückgegeben (die Anzahl der Sekunden seit dem 1. Januar 1970, UTC), der üblicherweise mit date() formatiert wird, bevor er dem Benutzer angezeigt wird.

Diese Seite behandelt die Syntax, den Rückgabewert, ein ausführbares Beispiel, den Unterschied zwischen Zugriffszeit und den verwandten Änderungs- und Statusänderungszeiten sowie den Caching-Fallstrick, über den die meisten Entwickler stolpern.

Syntax

fileatime(string $filename): int|false
  • $filename — der Pfad zur Datei, die Sie untersuchen möchten. Er kann relativ (aufgelöst gegen das Arbeitsverzeichnis des Skripts) oder absolut sein.
  • Rückgabewert — ein ganzzahliger Unix-Zeitstempel bei Erfolg oder false bei einem Fehler (zum Beispiel, wenn die Datei nicht existiert oder keine Berechtigung zum stat-Aufruf vorhanden ist). Da false ein gültiger PHP-Wert ist, sollten Sie immer mit !== false vergleichen, anstatt eine lose Wahrheitsprüfung durchzuführen.

Hinweis zu Linux-Zugriffszeiten. Auf modernen Linux-Systemen verhindern Mount-Optionen wie noatime oder relatime absichtlich, dass die Zugriffszeit bei jedem Lesevorgang aktualisiert wird, um Schreibvorgänge auf der Festplatte zu sparen. Wenn sich fileatime() nach dem Lesen einer Datei nicht ändert, liegt das an der Konfiguration des Dateisystems — nicht an einem Fehler in Ihrem Code.

Verwendung von fileatime()

  1. Rufen Sie fileatime() auf und übergeben Sie den Pfad der Datei, die Sie prüfen möchten.
  2. Prüfen Sie das Ergebnis gegen false, bevor Sie es verwenden, damit eine fehlende Datei keine Warnung erzeugt, wenn Sie es an date() übergeben.
  3. Formatieren Sie den Zeitstempel mit date(), um ihn in einen lesbaren String umzuwandeln.
<?php

// Create a small file so the example is self-contained and runnable.
$filename = 'example.txt';
file_put_contents($filename, "Hello, fileatime!\n");

// Read it back to register an access.
$contents = file_get_contents($filename);

$lastAccess = fileatime($filename);

if ($lastAccess !== false) {
    $when = date('Y-m-d H:i:s', $lastAccess);
    echo "The file {$filename} was last accessed on {$when}.\n";
} else {
    echo "Could not read the access time for {$filename}.\n";
}

unlink($filename); // tidy up

Dieses Skript erstellt example.txt, liest es und fragt dann mit fileatime(), wann zuletzt darauf zugegriffen wurde. Die Prüfung !== false stellt sicher, dass eine fehlende oder nicht lesbare Datei sauber behandelt wird, ohne eine Warnung auszulösen. Die Ausgabe sieht so aus:

The file example.txt was last accessed on 2026-06-21 10:42:07.

fileatime() vs. filemtime() vs. filectime()

PHP stellt drei eng verwandte Zeitstempel bereit. Die richtige Wahl ist entscheidend:

FunktionGibt zurückWird aktualisiert, wenn…
fileatime()Letzter ZugriffszeitpunktDer Dateiinhalt gelesen wird
filemtime()Letzter ÄnderungszeitpunktDer Dateiinhalt geschrieben/geändert wird
filectime()Letzter Inode-Änderungszeitpunkt (Statusänderung)Inhalt oder Metadaten (Berechtigungen, Eigentümer, Umbenennung) geändert werden

Wenn Sie wissen möchten, „wann hat jemand diese Datei zuletzt geöffnet", verwenden Sie fileatime(). Wenn Sie wissen möchten, „wann wurden die Daten zuletzt geändert" (der häufige Fall bei der Cache-Invalidierung), verwenden Sie filemtime().

Der Caching-Fallstrick

PHP speichert das Ergebnis von Dateistatusf­unktionen wie fileatime(), filemtime() und stat() für die Dauer einer Anfrage im Cache. Wenn Sie eine Datei erneut lesen und ihre Zugriffszeit innerhalb desselben Skriptlaufs erneut prüfen, erhalten Sie möglicherweise einen veralteten Wert. Leeren Sie den Cache mit clearstatcache(), bevor Sie erneut lesen:

<?php

$filename = 'example.txt';
file_put_contents($filename, "data\n");

$first = fileatime($filename);

clearstatcache();                       // force a fresh stat() next time
$contents = file_get_contents($filename);
clearstatcache();
$second = fileatime($filename);

echo ($second >= $first)
    ? "Access time is fresh.\n"
    : "Access time looks stale.\n";

unlink($filename);

Wann würde ich das verwenden?

  • Prüfen, welche Dateien zuletzt gelesen wurden (Log-Rotation, „zuletzt verwendet"-Bereinigung).
  • Erkennen ungenutzter Uploads oder temporärer Dateien, die sicher gelöscht werden können.
  • Diagnostizieren, ob ein Prozess tatsächlich auf eine Datei zugreift, von der Sie das erwarten.

Für änderungsbasierte Logik (Cache neu aufbauen, wenn sich die Quelldaten ändern) verwenden Sie stattdessen filemtime(). Um sicherzustellen, dass eine Datei existiert, bevor Sie eine dieser Funktionen aufrufen, kombinieren Sie sie mit file_exists(). Für den vollständigen Satz an Metadaten in einem einzigen Aufruf, siehe stat().

Zusammenfassung

fileatime() gibt den Unix-Zeitstempel des letzten Dateizugriffs zurück oder false bei einem Fehler. Prüfen Sie das Ergebnis immer mit !== false, formatieren Sie es mit date() und denken Sie an zwei Fallstricke: Linux-Mounts können Zugriffszeit-Aktualisierungen unterdrücken, und PHP speichert Stat-Ergebnisse innerhalb einer Anfrage im Cache, es sei denn, Sie rufen clearstatcache() auf.

Übung

Übung
Was macht die Funktion fileatime() in PHP?
Was macht die Funktion fileatime() in PHP?
Was this page helpful?