phpbar.de logo

Mailinglisten-Archive

[php] sleep()

[php] sleep()

Gloss Mathias Mathias.Gloss_(at)_start.de
Tue, 15 Feb 2000 12:21:20 +0100


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