Sir Ulli: Seite zwischendurch aktualisieren

Hallo nochmal,

also: Ich habe ein Skript, das mehrere Minuten braucht, bis es durchlaufen ist. Zwischendurch gibt es immer Fehler und Status-Meldungen aus (echo). Allerdings bekommt man diese erst zu sehen, wenn das skript komplett durchgelaufen ist. Gibt es eine Möglichkeit diese Meldungen nicht erst nach dem kompletten Durchlauf anzuzeigen, sondern zwischendurch?

gruss
Ulli

  1. Hello,

    also: Ich habe ein Skript, das mehrere Minuten braucht, bis es durchlaufen ist. Zwischendurch gibt es immer Fehler und Status-Meldungen aus (echo). Allerdings bekommt man diese erst zu sehen, wenn das skript komplett durchgelaufen ist. Gibt es eine Möglichkeit diese Meldungen nicht erst nach dem kompletten Durchlauf anzuzeigen, sondern zwischendurch?

    Eine halbwegs saubere Lösung wären zwei Frames.
    Eines für das eigentliche Script und eines für die Ausgaben.
    Das zweite muss sich dann per JavaScript oder metarefresh die neusten Ausgaben pollen.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. So etwas habe ich mir auch schon gedacht, aber eine reine PHP-Lösung gibts dann wohl nicht.

      Dank dir.

      1. Hello,

        So etwas habe ich mir auch schon gedacht, aber eine reine PHP-Lösung gibts dann wohl nicht.

        Nicht wirklich.
        Wir haben hier schon viel gemeinsam experimentiert. Eddi schrieb es Dir ja schon...
        Flush() funktioniert auch dann nicht mehr wie erhofft, wenn man spezielle HTTP-Header gesetzt hat.
        Im Prinzip wird die Übertragungskette Kette erst aufgelöst, wenn das Page Close/Connection Close stattgefunden hat. Und er Browser müsste seine Arbeit erst beginnen, wenn das letzte Byte des HTTP-Bodys eingetroffen ist.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

  2. Hallo Ulli,

    also: Ich habe ein Skript, das mehrere Minuten braucht, bis es durchlaufen ist. Zwischendurch gibt es immer Fehler und Status-Meldungen aus (echo). Allerdings bekommt man diese erst zu sehen, wenn das skript komplett durchgelaufen ist. Gibt es eine Möglichkeit diese Meldungen nicht erst nach dem kompletten Durchlauf anzuzeigen, sondern zwischendurch?

    das Schlüsselwort hierfür ist Pufferung, solang Deine Ausgabe nicht auch noch HTML-formatiert ist (, dann kommt auch noch das Rendern hinzu).

    PHP bringt von Hause aus einiges an Ansgabepuffern mit (http://de3.php.net/manual/de/ref.outcontrol.php). Eine sofortige Ausgabe _an den Webserver_ kann mit flush() nach jedem echo erzwungen werden. Weitere Puffer von Proxies/Firewalls kannst Du nicht beeinflussen.

    Damit keine Verzögerung der Anzeige im Browser antritt sollte insbesondere auf Tabellen (vgl.: Allgemeines zu Tabellen für Web-Seiten-Layouts) oder aber ganz auf HTML verzichtet werden (HTTP-Header "Content-Type: text/plain" setzen).

    Gruß aus Berlin!
    eddi