Question: I have the following:

```
echo time()."<br>";

sleep(1);
echo time()."<br>";

sleep(1);
echo time()."<br>";

```

I wrote the preceding code with intention to echo `time()."<br>"` ln 1,echo `time()."<br>"` ln 4, wait a final second and then echo the final `time()."<br>"`. Altough the time bieng echoed is correct when it comes to the intervals between time(), all echo functions are echoeing after the total of the waiting period/parameters in each sleep function.

This is how the script runs:

* Excutes.
* Waits 2 secons.
* echoes  

 1275540664  

 1275540665  

 1275540666

Notice the correct incrementation in `time()` being echoed. My question is why is it not behaving like expected to where it echoes, waits a second, echoes again, waits one final second and then echos the last parameter?

I know my question is a little confusing due to my wording, but i will try my hardest to answer any comments regarding this, thanks.

Answer: 
You have output buffering turned on.

It is more efficient for PHP to buffer up output and write it all to the browser in one go than it is to write the output in small bursts. So PHP will buffer the output and send it all in one go at the end (or once the buffer gets to a certain size).

You can manually flush the buffer by calling [flush()](http://www.php.net/manual/en/function.flush.php) after each call to `echo` (though I wouldn't recommend this is a "real" app - but then again, I wouldn't recommend calling `sleep` in a regular app, either!).
You can usually use `ob_flush()`, but it's definitely not reliable. And unfortunately, there's no other option.