2

I'm using the following code to produce buffered output on a db maintenance script:

function flush_buffers($string){
    echo $string;
    ob_end_flush();
    ob_flush();
    flush();
    ob_start();

}

While this works as expected on my local Wamp server, showing output each time the function is invoked, it doesn't on the online web server: here the output is sent only once the script has ended. How is that?

3
  • Does your web server have any additional buffering outside/beyond PHP's control? I believe that IIS, for example, commonly does this. Commented Jun 17, 2011 at 12:37
  • Netcraft reports: "Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 " Commented Jun 17, 2011 at 12:41
  • @dqhendricks, flush() manual states that some server overrides could occur :-( @Wiseguy, see second comment on flush() php manual (by user "brudinie") Commented Jun 17, 2011 at 12:44

1 Answer 1

4

Make sure output buffering is off in your php.ini file on your web server.

You also don't have to flush manually every time, you can make use of:

ob_implicit_flush(true);
ob_end_flush();

You should also remember that this is still browser specific. The browser will decide whether to show the output. Some browsers (for example IE6) won't output anything until it has enough characters to output.

The following will turn off everything that could cause unwanted output buffering.

@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);
for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); }
ob_implicit_flush(1);
Sign up to request clarification or add additional context in comments.

7 Comments

@Abs, same browser on two servers: one working, one not. Will ask the admin to check the settings in the PHP.ini file. Thanks
@Riccardo - you can do a quick test.php scrip where you just make use of phpinfo() and you can look for the output_buffering directive in your browser.
@Abs, has no settings: output_buffering "no value, no value"
@Riccardo and what is it set as for your WAMP server? Btw, there is a great comment in php.net by mandor. I have updated my question with it.
@Abs, this is correct. @Jarrod, it used to work on the production server, then due to resources usage limitation, it may have been turned off.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.