Moin,
weiß jemand, wie ich es erreichen kann, in einem PHP Script eine Datenbank im 2 Minutentakt auf neue Einträge zu prüfen (sprich: eine Funktion aufzurufen?
Die passende Lösung dafür wäre das PHP-Skript als Shellskript zu betrachten und das periodische Aufrufen von cron erledigen zu lassen. Dazu findet sich ein bisschen was im Archiv und vieles im Netz.
Ich möchte die Seite erst neu laden, wenn ein neuer Eintrag vorhanden ist, d.h. es muß keine Ausgabe erfolgen, bis die Funktion true ergibt.
Das geht allerdings so nicht, da HTTP ein verbindungsloses Frage-Antwort-Protokoll ohne Push-Möglichkeit[1] ist. Du müsstest also den Browser dazu bringen dich zu fragen.
Am Elegantesten geht das so:
Du sendest ein paar Header die das Cachen für sagen wir 2 Minuten erlauben und weist den Browser an danach erneut anzufragen. Ausserdem verpasst du ihm ein Refresh: 120;URL=... (http://selfhtml.teamone.de/html/kopfdaten/meta.htm#weiterleitung) damit er selbsttätig nach 2 Minuten wiederkommt.
Wenn er ein lieber Browser ist, sendet er dir dann einen If-Modified-Since:-Header an dem dein PHP-Skript erkennen kann, wann der Browser das letzte mal da war. Falls sich deine Datenbank seit dem Zeitpunkt nicht geändert hat, spuckst du einfach ein header("HTTP/1.0 304 Not Modified"); aus und beendest das Skript ohne Ausgabe, ansonsten gibst du einfach die aktuellen Daten aus. Falls der Browser diesen Header nicht sendet, darfst du den Statuscode nicht verwenden (jedenfalls wird es vom Standard nicht ausdrücklich erwähnt, es kann, muß aber nicht funktionieren).
PS: Natürlich ungetest und vorbehaltlich eventueller Browserbugs.
[1] Es gab da einige Versuche in der Vergangenheit das umzumodeln die aber IIRC allesamt gescheitert sind. Die Channels aus Windows 9x sind wohl das prominenteste Beispiel dafür. Das Thema ist wohl bestenfalls noch historisch interessant.
Henryk Plötz
Grüße von der Ostsee