[php] flush() werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • zzzzzzzzzzzz
  • Registratie: Mei 2002
  • Laatst online: 22-05-2020
Hallo,

Ik ben al een poosje aan het stoeien met de flush functie van php.

Ik heb inmiddels ongeveer alle mogelijke oplossingen die op got staan al geprobeerd.

de code die volgens mij zou moeten werken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
echo str_repeat(" ", 300);
flush();
echo "<br>";

for($i=0; $i<10; $i++)
{
    echo "Regel $i<br>";
    sleep(1);
    flush();
}

?>

Ik krijg echter na 10 seconden in een keer alle regels te zien. 
Toch ben ik van mening dat ik iedere seconde een regel extra te zien zou moeten krijgen. 

Kan iemand me vertellen waar door dat komt?
Het draait op een linux server. 

Acties:
  • 0 Henk 'm!

Anoniem: 60511

volgens mij kan die pass flushen vanaf 256 karakters, maar dat weet ik niet zeker... vandaar dat het bij jou niet werkt...

[edit]
het is niet volgens mij; het is zeker weten :) zie: http://nl.php.net/flush

[ Voor 27% gewijzigd door Anoniem: 60511 op 17-06-2004 13:11 ]


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Als je nog IE gebruikt dan... En wie doet dat nog vandaag de dag? :P In andere browsers moet het gewoon werken:
Some versions of Microsoft Internet Explorer will only start to display the page after they have received 256 bytes of output, so you may need to send extra whitespace before flushing to get those browsers to display the page.

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

  • zzzzzzzzzzzz
  • Registratie: Mei 2002
  • Laatst online: 22-05-2020
ik echo eerst 300 spaties:

PHP:
1
2
3
4
5
6
<?php
echo str_repeat(" ", 300); 
flush(); 

...
?>

Acties:
  • 0 Henk 'm!

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 09-07 20:09
Anoniem: 60511 schreef op 17 juni 2004 @ 13:10:
volgens mij kan die pass flushen vanaf 256 karakters, maar dat weet ik niet zeker... vandaar dat het bij jou niet werkt...

[edit]
het is niet volgens mij; het is zeker weten :) zie: http://nl.php.net/flush
Daarom echo'ed hij ook eerst 300 spaties...

Maar bij mij werkt 't gewoon op Windows. Misschien dat je browser het geheel niet rendert voordat alles binnen is. Je zou het eens kunnen proberen met telnet, en dan kijken hoe je httpd alles verstuurt. Als dit goed werkt zou je eens een andere browser kunnen proberen.

Acties:
  • 0 Henk 'm!

Anoniem: 60511

Dan moet je er wel dit van maken, anders heeft die 300 spaties ook geen zien; is trouwens wel een mega ranzige oplossing :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php 

for($i=0; $i<10; $i++) 
{ 
    echo "Regel" . $i
    echo str_repeat(" ", 300); 
    echo "<br />"; 
    sleep(1); 
    flush(); 
} 

?>

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Het zou kunnen dat je TCP laag de packets bij elkaar pakt en in een keer verstuurd. TCP protocol staat dat toe.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 04-07 15:03

NMe

Quia Ego Sic Dico.

Anoniem: 60511 schreef op 17 juni 2004 @ 13:17:
Dan moet je er wel dit van maken, anders heeft die 300 spaties ook geen zien; is trouwens wel een mega ranzige oplossing :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php 

for($i=0; $i<10; $i++) 
{ 
    echo "Regel" . $i
    echo str_repeat(" ", 300); 
    echo "<br />"; 
    sleep(1); 
    flush(); 
} 

?>
Volgens mij heb jij geen flauw idee wat de functie str_repeat doet he? :/
str_repeat(" ", 300) drukt gewoon 300 spaties af... Wat jij doet is alleen maar overdreven grote HTML maken. :X

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • zzzzzzzzzzzz
  • Registratie: Mei 2002
  • Laatst online: 22-05-2020
Ik heb het ook geprobeerd op een windows server en ook met ene andere broser (firefox)

het mocht allemaal neit baten :(

Acties:
  • 0 Henk 'm!

Anoniem: 60511

NMe84 schreef op 17 juni 2004 @ 13:37:
[...]

Volgens mij heb jij geen flauw idee wat de functie str_repeat doet he? :/
str_repeat(" ", 300) drukt gewoon 300 spaties af... Wat jij doet is alleen maar overdreven grote HTML maken. :X
Wat hij probeert is gewoon om te testen voldoende bytes bij elkaar te krijgen zodat de functie flush() eigenlijk zou moeten werken... volgens mij lees jij niet goed :9

Acties:
  • 0 Henk 'm!

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 07-07 21:00
Wat ik me kan herinneren (geld in mijn bevindingen voor IIS) is dat een compressie de boosdoender is.

Ik had op mijn IIS ook zo'n compressie pakket geinstalleerd die dus alles zipt. Dit soort pakketen bufferen alles en gooien het in 1 keer door naar de client. Misschien is dit bij jou ook wel zo?

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


Acties:
  • 0 Henk 'm!

  • RwD
  • Registratie: Oktober 2000
  • Niet online

RwD

kloonikoon

zzzzzzzzzzzz schreef op 17 juni 2004 @ 13:42:
Ik heb het ook geprobeerd op een windows server en ook met ene andere broser (firefox)

het mocht allemaal neit baten :(
En je bent niet de enige, laatst wilde ik een simpel script draaein dat meerdere instructies uit voert en even de status bijhouden. de status info bij mekaar was 124Kb, dus 256 karakters zat. en ik kreeg hem ook pas in 1 keer te zien :S

IIS (laatste versie) en IE (geheel geupdate)

edit:
Voor zover ik weet geen compressie, maar ik kan me vergissen

edit2:
Ik heb zoiets eerder gehad valt me in, en als ik dan tijden s het wachten op stop drukte kreeg ik wel een hoop te zien, ongeveer het gedeelte zover als je zou verwachten dat hij met verwerking is. Dus misschien ligt het idd aan IE???

[ Voor 25% gewijzigd door RwD op 17-06-2004 13:58 ]


Acties:
  • 0 Henk 'm!

  • Rolandow
  • Registratie: Januari 2002
  • Laatst online: 10:16
Het voorbeeld op php.net werkt bij mij wel gewoon. Misschien heb je daar iets aan?

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
echo str_repeat(" ", 256);
$i = 100;
while($i > 0)
{
   echo $i." bottle".($i != 1 ? 's' : '')." of beer on the wall, ".$i." bottle".($i != 1 ? 's' : '')." of beer. Take one down and pass it around, ".(--$i)." bottle".($i != 1 ? 's' : '')." of beer on the wall<br>\n";
   flush();
   ob_flush();
   usleep(50000);
}
?>

Koffie met thee is minder lekker.


Acties:
  • 0 Henk 'm!

  • zzzzzzzzzzzz
  • Registratie: Mei 2002
  • Laatst online: 22-05-2020
Ik ben bang dat het toch aan de server ligt...

Ik heb het op een andere server geprobeerd en daar werkt het wel..

Raar verhaal...
Pagina: 1