JavaScript Refresh eines Containers wenn sich Datei geändert hat!

Belee

Lt. Commander
Dabei seit
Dez. 2006
Beiträge
1.518
Hallo Leute, einen schönen Freitag Abend wünsche ich euch!


Ich habe da eine Frage bzgl. Ajax, ich möchte sofort betonen das ich in Sachen Ajax noch in Kinderlatschen stecke und nicht viel bzw. noch weniger Ahnung habe, aus dem Grund benötige ich jetzt eure Hilfe.

Ich betreibe eine Radioseite "wisst Ihr bestimmt schon", nun, der aktuell spielender Titel wird via CronJob und Perl alle 2 Minuten vom Streamserver geholt. Das kurze Interval weil die Titel halt unterschiedlich lang sind und es zudem auch Jingles gibt die kurz sind, darum sind 2 Minuten eigentlich schon wenig aber ich möchte meinen Hoster nicht verärgern.

So, und nun mein Vorhaben....

Mit diesen Ajax-Script
HTML:
<script type="text/javascript">
  $(document).ready(function() {
    $("#nowplaying-body").load("discostream.ajax.php");
       var refreshId = setInterval(function() {
          $("#nowplaying-body").load('discostream.ajax.php?' + 1*new Date());
       }, 120000);
    });
</script>
aktualisiere ich auf der Seite einen <div> Container in der sich halt der Inhalt "Titel, Bild usw. befinden", dieser wird jetzt alle 2 Minuten aktualisiert, soweit gut, besser wäre es aber wenn das Ajax Script nur dann aktualisiert wenn sich auch wirklich was geändert hat.

Die Quelle dafür existiert! und zwar eine Textdatei, diese hat alle 2 Minuten einen neuen Timestamp also Aktualität.
Jetzt würde ich das Ajax-Script so umbauen das es die Textdatei einmal die Minute auf Aktualität prüft, und wenn sich diese geändert hat soll der Inhalt im <div> Conatiner ausgetauscht bzw. aktualisiert werden ansonsten nicht.

Geht das überhaupt? falls ja wäre ich euch dankbar wenn mir jemand erklären würde wie ich das am besten mache.

Danke.

Gruß
Belee
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.570
Kannst du nicht einfach das PHP-Skript fragen, ob sich seit dem letzten Aufruf etwas geändert hat?
 

Belee

Lt. Commander
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
1.518
Klar nur was soll mir das bringen?
Ich benötige eine Sache die im Hintergrund diese Textdatei ständig auf Aktualität prüft, und wenn sich diese geändert hat dem JavaScript sagt das es den Inhalt im <div> aktualisiert weil es neue Infos gibt.

Das beste wäre wie oben geschrieben das dass Ajax-Script diese Datei selbst ständig prüft und den Inhalt dann im <div> nur aktualisiert wenn die Textdatei geändert wurde. Das ist eigentlich die logischste Methode nur wie setze ich das um?

Man könnte natürlich mit dem Ajax ein PHP-Script ständig laufen lassen welches die Textdatei prüft nur dann müsste man Brücken bauen, das wäre zu umständlich.
 
F

Flup

Gast
Du bist dir schon bewusst, dass das Javascript auf dem Client läuft, oder? Woher soll denn der Client nun wissen, ob sich die Datei auf dem Server geändert hat?


Was NullPointer gesagt hat, stimmt schon, einfacher gehts nicht. (Das sind 3 Zeilen php und 2 Zeilen Javascript (wenn du wie oben jquery verwendest))
 

ice-breaker

Commodore
Dabei seit
Nov. 2008
Beiträge
4.133
Was du benötigst ist eine Art Live-Push vom Server zum Client, wenn sich etwas ändert. "Realtime-Web"

Comet wäre da z.B. eine Möglichkeit. Wenn du nur normalen Webspace hast, musst du da auf externe Anbieter anbieten, Pubnub scheint bis zu einem gewissen Volumen kostenlos zu sein, habe ich jedoch auch noch nicht genutzt.
 

QXARE

Lt. Commander
Dabei seit
Aug. 2008
Beiträge
1.342
Zumal du bei der Prüfung der Textdatei via PHP-Datei (die per AJAX minütlich aufgerufen wird) auch gleich die zu ändernden Inhalte zurückliefern kannst und du immer noch bei einem Request bist.
 

Belee

Lt. Commander
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
1.518
Dann schreibe mir bitte mal wie du dir die Funktion vorstellst, ich bin gespannt. Keinen Code sondern in Worten wie das deiner Meinung nach funktionieren soll.
 
F

Flup

Gast
Falls du damit mich meinst:

- Javascript requested check.php?task=timestamp
- check.php schaut mittels filetime() den timestamp an und gibt ihn zurück
- Javascript vergleicht den Timestamp mit dem des letzten requests
- Falls neuer, nochmals ajax-request, diesmal die ganze Datei
- Fertig

(Gut, sind vlt etwas mehr als 5 Zeilen Code aber in 5min erledigt^^)
 
Zuletzt von einem Moderator bearbeitet: (kleine korrektur)

Belee

Lt. Commander
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
1.518
Erst waren es max. 5 Zeilen Code und nun in 5 Minuten erledigt :)
Ich denke zum Schluss hängst du dann 2 Tage dran, habe ich bis jetzt immer die Erfahrung mit gemacht, Leute die auf dicke Hose gemacht haben ,,ich schreibe das in 3 Minuten,, haben dann entweder alles falsch gemacht oder waren nach 2 Tagen immer noch nicht fertig :-) Sorry aber das konnte ich mir jetzt nicht verkneifen da du mich an jemanden erinnert hast xD
 
F

Flup

Gast
Na dann lass doch, wie du vorgeschlagen hast, gleich das JavaScript den Timestamp überprüfen, das ist mit Sicherheit schneller implementiert....

(Manche Leute wollen keine Hilfe)

BTW: Ich würd an deiner Stelle die englische Seite nochmal etwas Korrekturlesen.

We playing: 50s, 60s, 70s, 80s, 90s Hits/Rarities and some actual Dance Music e.g. from Disco [...]
How often do you listen radio from Internet?
 
Zuletzt von einem Moderator bearbeitet:

Belee

Lt. Commander
Ersteller dieses Themas
Dabei seit
Dez. 2006
Beiträge
1.518
Welche Hilfe meinst du bitte? aber danke das du jetzt Fehler auf meiner Seite suchst. Tipp: mein CSS ist nicht valide - schon geprüft? :D

Korrekturgelesen wird wenn die Seite fertig ist, ist sie noch lange nicht, aber trotzdem danke. Darf ich auch eins deiner Werke sehen? damit ich auch nach Fehlern suchen kann? :D

BTW: Was soll an "We playing" falsch sein?
BTW: Was soll an "e.g. from Disco" falsch sein?
usw.

Spar es dir, Englisch hats du wohl auch in 5 Minuten gelernt :D
 
Zuletzt bearbeitet:
Top