How to determine wether ob_start(); has been called already

后端 未结 4 1469
误落风尘
误落风尘 2021-02-19 05:42

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();

4条回答
  •  一向
    一向 (楼主)
    2021-02-19 06:19

    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.

提交回复
热议问题