How to determine wether ob_start(); has been called already
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.
General:
if (ob_get_status()) { // ob started}
More specific
$status = ob_get_status();if ($status['name']=='ob_gzhandler') { // ob named ob_gzhandler started}