Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP loop; how to print each result and delay it for a second before echoing another result?

Tags:

loops

php

delay

this is my first question here on stackoverflow, I just curious.. is it possible to delay loop in PHP ? I'm trying to print each result to browser and pause the script using sleep() before it process another loop, but it's not working, here's the script that I use:

<?php
$n = 1;

while ($n < 10) {
    echo $n."<br />";
    $n++;
    sleep(1);
}
?>

PS: I'm using Firefox and Apache2 on Linux Mint.

like image 604
Dwi Murdianto Avatar asked Sep 20 '25 23:09

Dwi Murdianto


1 Answers

Servers usually buffer the output of a server side script until there's enough in it to output try something like this. Combination of setting output buffering off and manually flushing the buffer. Note the implcit flush line and the flush and ob_flush lines.

<?php 
@ini_set("output_buffering", "Off");
@ini_set('implicit_flush', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('max_execution_time',1200);


header( 'Content-type: text/html; charset=utf-8' );


echo "Testing time out in seconds\n";
for ($i = 0; $i < 1150; $i++) {
    echo $i." -- ";

    if(sleep(1)!=0)
    {
        echo "sleep failed script terminating"; 
        break;
    }
    flush();
    ob_flush();
}

?>
like image 174
Rich Avatar answered Sep 22 '25 12:09

Rich