ceejay: PHP - Backgroundprozesse / Intervalls, wie in JavaScript ? window.setTimeOut()

Beitrag lesen

Meine Aufgabenstellung:

Eine .html-Seite (möglicherweise m. Frames) darstellen.
Diese .html-Seite (oder 1 innerhalb des Framesets) soll einen anderen Inhalt darstellen, erhalten, sobald ein "Moderator/Administrator" das so will. Also auf den Knopf drückt.

Mein Ansatz:
1.) mit PHP, da ich kein Java kann und Perl mir ungeeignet erscheint.
2.) eine configdatei in der der Name der neu anzuzeigenden Datei o.ä.
    steht, diese wird dann auf "modified" oder veränderten Inhalt
    überprüft, und sollte das der Fall (modified/changed) wird der
    neue Inhalt dargestellt.
3.) dasselbe wie bei 2.) nur das die Daten nicht aus nem File sondern
    von einem geöffneten Port auf einem Server abgefragt werden.
    ähnlich Port 13 (MOTD ???)
4.) entweder wird eines der Frames mit dem neuen Inhalt befüllt.
    (per document.locationdocument.writehttp-headerwasauchimmer)
    Oder: alles besteht aus einer .html Seite, und geparsed, oder
    per Object/Class - Aufruf, oder so - habe davon noch nicht genug
    ahnung/erfahrung - ein object für die Ausgabe gibt es bereits,
    dieses Objekt enthält den code der .html-seite und wird mit dem
    Bildlink ("/pix/bild.jpg") aufgerufen ($pp = new PP("/pix/bild1.jpg"); $pp->Display(); // funktioniert erstmal)
5.) Socket-Connections - aber damit hab ich auch noch zu wenig
    Erfahrung.

Mein Problem:
1.) der Überwachungsprozess, der entscheided, ob ein neues
    Bild/Inhalt dargestellt werden soll, soll im Hintergrund laufen.
    also ähnlich wie bei JavaScript window.setTimeout, oder
    setInterval usw. , nur das ich das irgendwie nicht so schnalle

Meine erste Lösung war recht simpel:
$altedatei="";
function Loop() {

$zeit     = time();      //aktuelle zeit in sek.
$sollzeit = $zeit + 5;   //plus 5 sekunden = sollzeit

while( $sollzeit > $zeit ) {
      $datei = join("", file("config.txt","r") );
      $datei = chop($datei);
      if($datei != $altedatei) {
         $altedatei=$datei;
         $pp = new Presentation("html-template.html",$datei);
         $pp->Display();
         $zeit = time(); //aktuelle zeit in sek.
      }
      flush();
      sleep(1);          // warte 1 sekunde
}
flush();
Loop();
}

Leider bringt mich das nicht weiter, da der Loop nicht im Hintergrund durchgeführt, sondern der Browser dabei die ganze Zeit hängt. Wenn man dabei mal davon absieht, das es sich hierbei um einen Endlosloop handelt. Ich würde lieber mit window.setInterval() oder window.settimeout() arbeiten, habe aber vergleichbares in PHP4 noch nicht finden können. Leider half flush() auch nichts, es wird dennoch nichts ausgegeben.

Wer kann helfen ?!

mfg
cee jay