In diesem Tutorial erkläre ich, wie man mit jQuery und PHP das Veränderungsdatum einer Datei prüfen kann.
Mit der Javascript-Bibliothek jQuery lässt sich ohne großen Aufwand eine einfache Ajax-Anwendung realisieren. Im folgenden gehe ich davon aus, dass in die aufgerufene Seite bereits das jQuery-Framework eingebunden wurde (hier kann das Einbinden nachgelesen werden). Dies ist notwendig, damit das nachfolgende Beispiel funktioniert.
Für was benötige ich die Ajax-Technologie?
Mit der Ajax-Technologie können Seiteninhalte nachgeladen werden, ohne dass diese komplett neu geladen werden muss. In diesem Beispiel wird das Änderungsdatum einer Datei überprüft und im Falle einer Änderung der Inhalt eines Containers aktualisiert. Wurde die Datei nicht geändert, verändert sich auch der Inhalt des Containers nicht.
Dieses Tutorial ist meinem Leser Mike gewidmet, der mich bat, diese Materie zu erklären. Ich hoffe, dass ich mit diesem Beispiel ausreichend auf die Frage eingegangen bin. Falls Fragen auftauchen sollte, oder auch sonst, bitte einfach kommentieren!
Beispiel
Für dieses Tutorial verwende ich die Dateien file.txt
, index.php
, refresh.php
, time.txt
, timestamp.php
und
update.php
, die ich nachfolgend beschreibe. Die beiden Textdateien (file.txt
und time.txt
) benötigen volle
Schreibrechte (chmod 666
), damit der Inhalt bearbeitet werden kann. Ich weiß, dass man dieses Beispiel auch mit
weniger Dateien hätte lösen können, ich denke jedoch, dass es mit mehr Dateien übersichtlicher und vor allem verständlicher wird.
Folgender Code wird in den head-Bereich der Homepage (in meinem Fall index.php
) geschrieben:
|
|
Die Funktion timestamp()
und die darin aufgerufene Datei update.php
dienen hier nur dazu, die Datei file.txt
zu
bearbeiten, so dass ein neuer Zeitstempel erzeugt wird.
Folgender Code wird dorthin geschrieben, wo später die Ausgabe des PHP-Scripts erscheinen soll:
|
|
Die Datei refresh.php
enthält die Ausgabe, die angezeigt werden soll, falls die Datei geändert wurde. In diesem Beispiel
wird einfach nur nochmal das letzte Änderungsdatum der Datei ausgegeben.
In der Datei timestamp.php
wird überprüft, ob sich der Zeitstempel verändert hat. In diesem Beispiel erhält die Datei
das Label “neu”, wenn sie vor weniger als 10 Sekunden verändert wurde.
|
|
In der Datei update.php
wird einfach nur der Dateiinhalt verändert. Zusätzlich dazu wird in der Datei time.txt
ein
neuer Zeitstempel eingetragen, falls eine Änderung vorgenommen wurde.
|
|
Die Datei time.txt
sollte leer sein, in der Datei file.txt
kann irgendein Inhalt stehen oder auch leer sein, in
diesem Beispiel wird der Inhalt der file.txt
beim Update überschrieben.
Erklärung
Im head-Bereich wird alle 10 Sekunden ein Javascript ausgeführt, das überprüft, ob eine aktueller Zeitstempel in der
Datei time.txt
steht. Wird ein aktueller Zeitstempel gefunden, wird die Funktion update()
aufgerufen, die den
Inhalt des Containers aktualisiert. Ist kein aktueller Zeitstempel vorhanden, so wird an dem Containerinhalt nichts
verändert. Ein neuer Zeitstempel muss dann in die Datei time.txt
eingetragen werden, wenn die Datei file.txt
verändert wird. Dies geschieht zusammen mit der Veränderung in der Datei update.php
.
Da das Javascript im head-Bereich nur alle 10 Sekunden ausgeführt wird, kann es u.U. kurz dauern, bis eine Änderung
angezeigt wird. Die Aktualisierungsrate kann natürlich erhöht werden, dies kann jedoch u.U. zu Lasten der Performance
des Servers gehen.