Aktualisierung einer Datei abfragen.

Crazy_down

Erfahrenes Mitglied
Hallo, ich versuche gerade mein Script zu Vervollständigen und möchte das es Nachprüft ob eine Datei Aktualisiert wurde.
Wenn ja soll er daraus die neusten Daten holen ansonsten einfach die alten Benutzen.

So der Gedanke an dem ich gerade hänge ist:
Mein PHP Script läd sich alle 20 sek. selbst neu. Dabei läd er in eine Variable
PHP:
$letzte_aktualisierung = date("d.m.Y - H:i",filemtime(basename("D:\xampp-win\xampp\htdocs\..\Uebung\gpp002.html")));

Damit hat er ja ständig das Aktualisierte Datum der Datei.
Irgendwie muss ich in eine Variable das wirkliche alte Datum schreiben um zuvergleichen ob das neue != dem alten ist.

Und da komm ich grade nicht weiter ^^

Danke schonmal ;)
greetz
Crazy_down
 
Du könntest z.B. beim Reload das alte Datum als Parameter an das Script übergeben und mit dem dann eingelesen Wert vergleichen.
 
Aber grigt es dann nicht trotzdem immer wieder das neue Datum ?
Ich hab mal bisschen Quellcode geschrieben zu Deiner Idee.

PHP:
<?php
 echo "letzte_aktualisierung".$letzte_aktualisierung."<br>";
 echo"old_date".$old_date."<br>";
 $letzte_aktualisierung = date("d.m.Y",filemtime(basename("D:\xampp-win\xampp\htdocs\toa\Uebung\gpp002.html")));

 if($letze_aktualisierung!= $old_date )
 {
  echo "Datum ist veraltet.";
 }
 else
 {
 echo "Datum ist korrekt.";
 }

 echo "<meta http-equiv='refresh' content='5; URL=aktualisierungs_pruefung.php?old_date=$letzte_aktualisierung'>";
?>

Ehm wenn ich jetzt Logisch drüber nachdenke sollte es sogar richtig sein, da er mir ja auch die Zeit ausgibt und diese immer anders ist.

Oder hab ich das schon wieder verdreht ?


Edit: Ich hab es jetzt nur mit dem Datum aber irgendwie gehts immer noch nicht wie ich will. ^^

Edit2: Es soltle ja trotzdem gehn da sich ja die zeit nicht ändert ;) Man ich komm nich aufn Nenner.
 
Zuletzt bearbeitet:
Ja, jetzt ist es genau Umgedreht.
Wenn ich das Aktualisierugsdatum änder, ist das Datum Korrekt ltd. meiner Schleife und ansonsten ist es Falsch. Es sollte doch genau andersrum sein, glaube ich ^^

Edit:
Die Ausgabe erzeugt:

letzte_aktualisierung31.05.2007 - 03.05.47
old_date31.05.2007 - 03.05.47
Datum ist veraltet.

man Sieht das die beiden Variablen gleich sind also sollte er doch in den Else Zweig oder nicht ?
 
Zuletzt bearbeitet:
Irgendwas stimmt doch auch mit deinem date() Aufruf nicht, oder? Mit date("d.m.Y", timestmp...) erhälst du doch nur das Datum ohne Uhrzeit. Vergleich am besten die Timestamps direkt:

PHP:
<?php
$oldtime = $_GET[oldtime];
$curtime = date("d.m.Y",filemtime(basename("D:\xampp-win\xampp\htdocs\toa\Uebung\gpp002.html")));
if($oldtime < $curtime)
   echo "Die Datei ist veraltet";
else
   echo "Die Datei ist aktuell";
echo "Aktuelle Zeit der Datei:".date("d.m.Y",$curtime);
echo ""<meta http-equiv='refresh' content='5; URL=aktualisierungs_pruefung.php?old_date=$curtime'>";

Ist aber ungetestet...
 
Nein geht leider nicht.
In deinem Fall bekommt $curtime den Wert 01.01.1970.
bzw. erstmal kommt nen Parse error bei
$oldtime = $_GET[oldtime];
ich glaube du meintest
$oldtime = $_GET[old_date];
oder ?

Also du meinst es liegt an den Timestamps ?
 
Ist natürlich auch Blödsinn was ich da geschrieben habe:
PHP:
<?php 
$oldtime = $_GET[oldtime]; 
$curtime = filemtime(basename("D:\xampp-win\xampp\htdocs\toa\Uebung\gpp002.html")); 
if($oldtime < $curtime) 
   echo "Die Datei ist veraltet"; 
else 
   echo "Die Datei ist aktuell"; 
echo "Aktuelle Zeit der Datei:".date("d.m.Y",$curtime); 
echo ""<meta http-equiv='refresh' content='5; URL=aktualisierungs_pruefung.php?old_date=$curtime'>";

Probiert mal so...
 
Nein geht leider auch nicht richtig ^^
Trotz das die Daten gleich sind, sagt er sie stimmen nicht.

Ich habe es jetzt so gelöst.

Datei1.php
PHP:
<?php
$letzte_aktualisierung = date("d.m.Y.H.m.s",filemtime(basename("Uebung\gpp002.html")));
 echo "<meta http-equiv='refresh' content='2; URL=pruefung.php?oldtime=$letzte_aktualisierung'>";
?>

Datei2.php
PHP:
<?php
$check_date=$_GET[oldtime];
$aktualisierung = date("d.m.Y.H.m.s",filemtime(basename("Uebung\gpp002.html")));

echo "Übergebenes Datum:".$check_date;
echo "<br> Ermitteltest Datum: ".$aktualisierung;

if($check_date == $aktualisierung)
{
  echo "<br>Aktuelle Datei ist geladen";
  echo "<meta http-equiv='refresh' content='5; URL=$SERVER[PHP_SELF]'>";
}
else
{
       echo "<br>Neue Datei muss geladen werden";
       echo "<meta http-equiv='refresh' content='2; URL=aktualisierungs_pruefung.php'>";
}

?>

Nicht die Perfekteste Lösung, aber sie Funktioniert.
trotzdem danke für die Hilfe. Ich hätte natürlich lieber Verstanden warum die andere Version nicht Funktioniert aber naja ^^
 
Zurück