Difference between ob_clean and ob_flush? Difference between ob_clean and ob_flush? php php

Difference between ob_clean and ob_flush?


the *_clean variants just empty the buffer, whereas *_flush functions print what is in the buffer (send the contents to the output buffer).

Example:

ob_start();print "foo";      // This never prints because ob_end_clean just emptiesob_end_clean();   //    the buffer and never prints or returns anything.ob_start();print "bar";      // This IS printed, but just not right here.ob_end_flush();   // It's printed here, because ob_end_flush "prints" what's in                  // the buffer, rather than returning it                  //     (unlike the ob_get_* functions)


The key difference is*_clean() discards changes and *_flush() outputs to the browser.

Usage of ob_end_clean()

it is mostly used when you want to have a chunk of html and do not want to output to the browser right away but may be used in future.

Eg.

ob_start()echo "<some html chunk>";$htmlIntermediateData = ob_get_contents();ob_end_clean();{{some more business logic}}ob_start();echo "<some html chunk>";$someMoreCode = ob_get_content();ob_end_clean();renderTogether($htmlIntermediateCode, $someMoreCode);

where as ob_end_flush() will render twice, once for each.