Search code examples
phpoutput-buffering

PHP Flush All Levels of Output Buffering


I'm trying to implement a simple Http Response class that implements Http Streaming (or Chunked-Encoding). For this to be possible, I need to set output_buffering = Off in the php.ini, and flush the output at certain intervals.

PHP does a good job of this automatically - except for the actual flushing mechanism. I've gotten it to work, but I'm not sure if it's overboard. I want to know how to flush each level of output buffering at once, without calling a billion functions (I'm not sure which ones are redundant on which environments / in which scenarios).

    while (ob_get_level())
    {
        ob_end_flush();
    }

    // print the buffer

    flush();
    ob_flush();

Is this overkill?


Solution

  • You don't need ob_flush() and ob_end_flush(). Your while loop is sufficient.

    You should also look at: http://us.php.net/manual/en/function.ob-implicit-flush.php

    Your need for flush() after ob_end_flush() depends on how you set this function.