phpoutput-buffering

What's the use of ob_start() in php?


Is ob_start() used for output buffering so that the headers are buffered and not sent to the browser? Am I making sense here? If not then why should we use ob_start()?


Solution

  • Think of ob_start() as saying "Start remembering everything that would normally be outputted, but don't quite do anything with it yet."

    For example:

    ob_start();
    echo("Hello there!"); //would normally get printed to the screen/output to browser
    $output = ob_get_contents();
    ob_end_clean();
    

    There are two other functions you typically pair it with: ob_get_contents(), which basically gives you whatever has been "saved" to the buffer since it was turned on with ob_start(), and then ob_end_clean() or ob_flush(), which either stops saving things and discards whatever was saved, or stops saving and outputs it all at once, respectively.