Datenbankabfrage in Zeitintervall
Aardvaark
- php
Hallo,
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?
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.
Ist das überhaupt realisierbar.
Würde mir ein Javascript helfen? (***ZWEIFEL***)
Ich habe schon in vielen Foren gestöbert, aber noch keine Antwort auf mein Problem erhalten, noch nicht einmal ein "geht nicht".
Wäre auch froh, wenn mir jemand einen Link zukommen lassen könnte, wo ich bezgl. meines Problems ein bißchen stöbern kann.
Hallo, soweit ich weiss gibt es keine Funktion in PHP, um Ein Zeitintervall zu setzten, aber du könntest z.B. mit Javascript ein
Intervall machen und dann das AbfrageFormular immer wieder aufrufen..meinetwegen in einem kleinen Frame im Hintergrund, was sich meldet, wenn es was gefunden hat.
Javascript-Funktion:
window.setInterval("befehl/javascript Funktion",Zeitintervall in milsec)
Aber das wäre dann ziemlich gebastelt.
Hallo, erstmal vielen Dank für die Resonanz!
Ich sehe, dass es für mein Problem anscheinend keine vernünftige, browserübergreifende Lösung gibt.
Da ist in so Fällen nicht weiter schlimm, als das sich um ein Problem eher privater Natur handelt (d.h. kein Abgabetermin, oder so).
Eines würde mich trotzdem interessieren:
Kann man mit dem genannten Javascriptaufruf
window.setInterval("befehl/javascript Funktion",Zeitintervall in milsec)
auch eine PHP Funktion aufrufen?
Daran habe ich mich schon des öfteren versucht,
Aber das wäre dann ziemlich gebastelt.
Würde mich trotzdem interessieren. Habe keine Idee für die Syntax.
Ein <?php ?> in den Javascriptbereich reinzuknäulen tuts jedenfalls nicht.
Vielen Dank nochmal, für die Antworten.
Moin,
Ich sehe, dass es für mein Problem anscheinend keine vernünftige, browserübergreifende Lösung gibt.
Doch, ich habe sie genannt. Es gibt halt nur keine Möglichkeit nach deiner ursprünglichen Forderung "Server sendet etwas zum Browser, wenn ihm danach ist".
Kann man mit dem genannten Javascriptaufruf
window.setInterval("befehl/javascript Funktion",Zeitintervall in milsec)
auch eine PHP Funktion aufrufen?
6.10. Wie kann ich PHP-Funktionen aus JavaScript heraus aufrufen?
http://www.dclp-faq.de/q/q-funktion-js-php.html
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.