I use output buffering for gzip compression and access to what was put out before in a PHP script:
if(!ob_start(\"ob_gzhandler\")) ob_start();
ob_get_level returns the number of active output control handlers and ob_list_handlers returns a lift of those handlers. So you could do this:
if (!in_array('ob_gzhandler', ob_list_handlers())) {
ob_start('ob_gzhandler');
} else {
ob_start();
}
Although in general you can call ob_start
any number of times you want, using ob_gzhandler as handler cannot as you would compress already compressed data.