C.O*_*.O. 13 php output-buffering
我使用输出缓冲进行gzip压缩并访问以前在PHP脚本中输出的内容:
if(!ob_start("ob_gzhandler")) ob_start();
Run Code Online (Sandbox Code Playgroud)
现在,如果该脚本包含在另一个已经使用ob_start()的脚本中,我会收到警告:
警告:ob_start()[ref.outcontrol]:输出处理程序'ob_gzhandler'不能在第n行的文件名中使用两次
所以我想测试ob_start()已经被称为.我认为ob_get_status()应该是我需要的,但在测试中使用它的最佳方法是什么?
Gum*_*mbo 14
ob_get_level返回活动输出控制处理程序的数量,并ob_list_handlers返回这些处理程序的提升.所以你可以这样做:
if (!in_array('ob_gzhandler', ob_list_handlers())) {
ob_start('ob_gzhandler');
} else {
ob_start();
}
Run Code Online (Sandbox Code Playgroud)
虽然一般情况下你可以调用ob_start你想要的任意次数,但是使用ob_gzhandler处理程序不能像压缩已经压缩的数据一样.
And*_*ist 10
if (ob_get_level())
echo "ob already started";
Run Code Online (Sandbox Code Playgroud)
一般:
if (ob_get_status()) {
// ob started
}
Run Code Online (Sandbox Code Playgroud)
更加具体
$status = ob_get_status();
if ($status['name']=='ob_gzhandler') {
// ob named ob_gzhandler started
}
Run Code Online (Sandbox Code Playgroud)