Mailinglisten-Archive |
Aloha, > ---------- > Von: Stefan Pfister[SMTP:pfister_(at)_bodensee.com] > > > weiss jemand, wieso sleep() bei mir auf nem win32-system nicht laeuft? > > Kann es sein, daß der browser die daten stückchenweise bekommt, aber > > nichts anzeigt, sonder dies erst tut, wenn das script durchgelaufen ist? > > ich habe das script so versimpelt, daß ich eigentlich keinen tippfehler > > uebersehen kann :( > > > > <?php echo "0 Sekunden<br>"; flush(); sleep(2); > > echo "2 Sekunden<br>"; flush(); sleep(2); > > echo "4 Sekunden... fertig!<br>"; > > ?> > > Hmm, sehr komisch, unter Linux funktionieren deine Zeilen > jedenfalls ! > Das Problem duerfte nicht mit php oder dem Betriebs- system zusammenhaengen, sondern mit dem Webserver. Du erzeugst eine ungepufferte Ausgabe (mit dem flush() ) und der Webserver sollte nicht immer diese auch ungepuffert an den Client weiterreichen, weil ja sonst fuer den String "2 Sekunden<br>" ein ganzes tcp-Paket verschickt wird, obwohl die gesamte ausgabe in ein Paket passen würde. Deswegen puffert ein gescheiter Webserver dies, bis das Programm beendet wird. Das ist dann auch viel performanter. Wie du dem Webserver begreifbar machst, dass er NICHT puffern soll, ist eine gute Frage. Bei dem IIS 2, ncsa und Apache war es so, dass die entsprechenden CGI-Programme mit nph-* anfangen mussten UND alle Header selbst erzeugen mussten (nph=non-parsed- headers)... Vielleicht hilft das ja in deinem Fall, obwohl php eigentlich keine klassichche cgi-Anwendung ist (zumindest wenns als Modul laeuft ;) Gruesse, Mathias > Ciao Stefan P. > > -- > ** Durchgehend geöffnet: http://www.php-center.de ** > Die PHP-Liste: mailto:php_(at)_infosoc.uni-koeln.de > http://infosoc.uni-koeln.de/mailman/listinfo/php >
php::bar PHP Wiki - Listenarchive