4

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?

efritz
  • 5,125
  • 4
  • 24
  • 33
  • 1
    Beware that if your php ini configuration for `output_buffering = On` this would cause an infinite loop. – marcio Jul 24 '13 at 13:46

1 Answers1

3

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.

Ariel
  • 25,995
  • 5
  • 59
  • 69