Sven Rautenberg: Text ausgeben in einer While Schleife

Beitrag lesen

Moin!

danke für die Hilfe nur gehts dies bei mir nicht!

Dafür gibt es verschiedene Gründe, und du kannst keinen davon beeinflussen:

  • Der Webserver sammelt die Ausgabe von PHP trotz flush() erstmal in einem Puffer und sendet sie Seite erst, wenn das Skript fertig ist.

  • Irgenden Proxy auf dem Weg sammelt die Daten, um sie komplett weiterzuleiten.

  • Der Browser sammelt die Daten in einem Puffer, weil er die Seite anders nicht rendern kann.

Auf keines dieser Probleme kannst du Einfluß nehmen. HTTP ist eben einfach kein Protokoll für Echtzeitkommunikation, sondern nur zum Transport fertiger Webseiten gedacht. Counter, die einen Fortschritt anzeigen, verbieten sich da irgendwie von selbst.

Wenn ein Vorgang auf dem Server länger benötigt, hast du ohnehin eines  von zwei Problemen (weshalb man seine Arbeit, zumindest diejenige, die mit dem Browser in Verbindung steht, möglichst schnell erledigen sollte):

1. Der Benutzer bricht den scheinbar endlosen Ladevorgang ab.
2. Der Vorgang dauert so lange, daß ein Timeout vorher eintritt.

In diesen Fällen ist es schlauer, mit einer Jobwarteschlange zu arbeiten - diese Möglichkeit hat man auf normalem handelsüblichen Webspace aber üblicherweise nicht. Insofern würde ich auf diese Spielerei einfach verzichten.

- Sven Rautenberg