touch()
Die PHP-Funktion touch() setzt die Änderungs- und Zugriffszeit einer Datei. Erfahren Sie alles über Syntax, Parameter und Anwendungsbeispiele.
Einführung
In PHP wird die Funktion touch() verwendet, um die Änderungs- und Zugriffszeit einer Datei zu setzen. Sie ist eine nützliche Funktion für die Arbeit mit Dateien in Ihren PHP-Skripten. In diesem Artikel behandeln wir alles, was Sie über die Funktion touch() wissen müssen, einschließlich Syntax, Parameter und Beispiele für ihre Verwendung.
Die touch()-Funktion verstehen
Die Funktion touch() aktualisiert die Änderungszeit (mtime) und die Zugriffszeit (atime) einer Datei. Sie akzeptiert drei Parameter:
$filename— der Pfad zur Datei.$mtime(optional) — der Änderungszeitstempel als Unix-Zeit. Wird er weggelassen, wird die aktuelle Zeit (time()) verwendet.$atime(optional) — der Zugriffszeitstempel als Unix-Zeit. Wird er weggelassen, wird der an$mtimeübergebene Wert verwendet (nicht zwingend die aktuelle Zeit).
Wenn die angegebene Datei nicht existiert, erstellt touch() eine leere Datei unter diesem Pfad. Damit ist sie das standardmäßige PHP-Äquivalent des Unix-Befehls touch.
Typischerweise greifen Sie auf touch() zurück, wenn Sie:
- Eine leere Platzhalter- oder Sperrdatei erstellen möchten.
- Die mtime einer Datei „aktualisieren" möchten, damit Cache-Invalidierungstools (oder
make-artige Build-Prüfungen) sie als frisch geändert behandeln. - Einen bekannten Zeitstempel auf einer Datei setzen möchten, zum Testen oder für Systeme, die Änderungszeiten vergleichen.
Syntax der touch()-Funktion
Die Syntax der Funktion touch() lautet wie folgt:
touch(string $filename, ?int $mtime = null, ?int $atime = null): boolHierbei ist $filename der Pfad zur Datei, $mtime der Änderungszeitstempel im Unix-Format und $atime der Zugriffszeitstempel. Beide Zeitstempel sind optional. Die Funktion gibt bei Erfolg true oder bei einem Fehler false zurück.
Ein Zeitstempel in PHP ist einfach die Anzahl der Sekunden seit der Unix-Epoche (1. Jan 1970). Verwenden Sie time() für „jetzt", strtotime() zum Parsen eines Datums-Strings oder Arithmetik wie time() - 3600 für „vor einer Stunde".
Beispiele für die Verwendung von touch()
Schauen wir uns ein Beispiel an, wie die Funktion touch() in PHP verwendet werden kann.
Beispiel 1: Änderungs- und Zugriffszeit einer Datei aktualisieren
if (touch('example.txt', time())) {
echo "File timestamps updated successfully.";
} else {
echo "Failed to update file timestamps. Check permissions or file path.";
}Dieses Beispiel aktualisiert die Änderungs- und Zugriffszeit der Datei example.txt auf die aktuelle Zeit. Die if-Anweisung prüft den booleschen Rückgabewert, um potenzielle Fehler wie fehlende Dateien oder unzureichende Berechtigungen zu behandeln.
Beispiel 2: Änderungs- und Zugriffszeit explizit setzen
$mtime = time() - 3600; // 1 hour ago
$atime = time() - 1800; // 30 minutes ago
if (touch('example.txt', $mtime, $atime)) {
echo "Both timestamps updated successfully.";
} else {
echo "Failed to update timestamps.";
}Dieses Beispiel zeigt, wie man sowohl den Parameter $mtime als auch $atime übergibt, um unterschiedliche Werte für Änderungs- und Zugriffszeit zu setzen.
Beispiel 3: Eine Platzhalterdatei erstellen
Da touch() die Datei erstellt, wenn sie fehlt, ist es eine prägnante Möglichkeit, eine leere Datei zu erstellen, ohne einen Stream zu öffnen:
$path = 'cache/.gitkeep';
if (!file_exists($path)) {
touch($path);
echo "Placeholder created.";
} else {
echo "Placeholder already exists.";
}Nach dem Aufruf von touch() können Sie die neue Änderungszeit mit filemtime() zurücklesen, um die Änderung zu bestätigen:
$timestamp = mktime(0, 0, 0, 1, 1, 2030); // Jan 1, 2030 (in the default timezone)
touch('example.txt', $timestamp);
echo filemtime('example.txt') === $timestamp ? 'mtime set' : 'mismatch';Hinweis: Stellen Sie sicher, dass der PHP-Prozess Schreibrechte für das Zielverzeichnis hat. Wenn die Datei nicht existiert, erstellt
touch()sie mit Standardberechtigungen (abhängig von der System-umask). Das Setzen einer mtime in der Zukunft ist erlaubt und wird manchmal verwendet, um Cache-Neuaufbauten zu erzwingen.
Fazit
Die Funktion touch() bietet eine unkomplizierte Möglichkeit, Dateizeitstempel in PHP zu verwalten. Ob Sie Zugriffszeiten für Caching-Systeme aktualisieren, Dateiaktivitäten verfolgen oder Platzhalterdateien erstellen möchten – diese Funktion integriert sich nahtlos in Ihre Dateiverarbeitungs-Workflows. Wir hoffen, dass dieser Leitfaden geklärt hat, wie Sie touch() effektiv in Ihren Projekten einsetzen können.
Verwandte Funktionen
- filemtime() — liest die letzte Änderungszeit einer Datei.
- file_exists() — prüft, ob eine Datei oder ein Verzeichnis existiert, bevor sie berührt wird.
- fopen() — öffnet oder erstellt eine Datei, wenn Sie auch Inhalte schreiben müssen.
- unlink() — löscht eine Datei.
- date() — formatiert die Unix-Zeitstempel, mit denen
touch()arbeitet.