Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Output Control Functions : ob_get_level

ob_get_level

Return the nesting level of the output buffering mechanism (PHP 4 >= 4.2.0, PHP 5)
int ob_get_level ( )


Code Examples / Notes » ob_get_level

18-may-2005 04:45

Sometimes, ob_get_level() may be off by 1 because at the start of the script, it will return 1 even if ob_start() has never been called (and clearing the output buffer via ob_end_clean() and the like can be done without error).  As a result, the first ob_start() will have an ob_get_level() of 2, the second will be 3, and so on.
I'm not sure if this is a PHP 5 thing or possibly because our server is set to gzip all html documents.
Also, up until at least PHP 5.0.4 (current version), ob_get_level() will always return 0 inside a destructor.  This happens because the garbage collection for output buffers has already done before the destructor is called.  If you want to do something with the output buffer from within an object before the script exits, using a callback function with ob_start() is the way to go.


tit dot petric

function condor_error($errno, $errstr, $errfile, $errline)
{
       $errors = array(E_USER_ERROR, E_ERROR, E_PARSE);
       if (in_array($errno,$errors)) {
               while (ob_get_level()) {
                       ob_end_clean();
               }
               echo "<B>FATAL</B> [".$errno."] ".$errstr."
\n";
               echo "Fatal error at line ".$errline." of file ".$errfile;
               echo ", PHP ".PHP_VERSION." (".PHP_OS.")
\n";
               echo "Aborting...
\n\n";
               exit;
       }
}
set_error_handler("condor_error");
in case you wanted to use a function to use for deleting all buffered output (to clearly display errors), you have it above
this eliminates the need for ob_end_clean_all() in php. good code :)


bonzini

Even under older PHP, you can decide if output buffering is active (i.e. ob_get_level() > 0) using
  $ob_active = ob_get_length () !== FALSE
Paolo


Change Language


Follow Navioo On Twitter
flush
ob_clean
ob_end_clean
ob_end_flush
ob_flush
ob_get_clean
ob_get_contents
ob_get_flush
ob_get_length
ob_get_level
ob_get_status
ob_gzhandler
ob_implicit_flush
ob_list_handlers
ob_start
output_add_rewrite_var
output_reset_rewrite_vars
eXTReMe Tracker