Getting started

bool ob_start ( [callback output_function])

bool ob_end_flush ( void )

bool ob_end_clean ( void )

There are two ways to start buffering output: through a setting in php.ini to enable output buffering for all scripts, or by using a function call on a script-by-script basis. Surprisingly, the latter is preferred - it makes your code more portable, and also gives you greater flexibility.

To create a new output buffer and start writing to it, call ob_start(). There are two ways to end a buffer, which are ob_end_flush() and ob_end_clean() - the former ends the buffer and sends all data to output, and the latter ends the buffer without sending it to output. Every piece of text outputted while an output buffer is open is placed into that buffer as opposed to being sent to output. Consider the following script:

<?php
    ob_start();
    print "Hello First!\n";
    ob_end_flush();

    ob_start();
    print "Hello Second!\n";
    ob_end_clean();

    ob_start();
    print "Hello Third!\n";
?>

That script will output "Hello First" because the first text is placed into a buffer then flushed with ob_end_flush(). The "Hello Second" will not be printed out, though, because it is placed into a buffer which is cleaned using ob_end_clean() and not sent to output. Finally, the script will print out "Hello Third" because PHP automatically flushes open output buffers when it reaches the end of a script.

 

Want to learn PHP 7?

Hacking with PHP has been fully updated for PHP 7, and is now available as a downloadable PDF. Get over 1200 pages of hands-on PHP learning today!

If this was helpful, please take a moment to tell others about Hacking with PHP by tweeting about it!

Next chapter: Reusing buffers >>

Previous chapter: Performance Considerations

Jump to:

 

Home: Table of Contents

Copyright ©2015 Paul Hudson. Follow me: @twostraws.