Seite zwischendurch aktualisieren
Sir Ulli
- php
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
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

So etwas habe ich mir auch schon gedacht, aber eine reine PHP-Lösung gibts dann wohl nicht.
Dank dir.
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

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