如何判断是否ob_start();已经被调用了
我使用输出缓冲进行 gzip 压缩并访问 PHP 脚本中之前发布的内容:
if(!ob_start("ob_gzhandler")) ob_start();
现在,如果该脚本包含在另一个已使用 ob_start() 的脚本中,我会收到警告:
警告:ob_start() [ref.outcontrol]:输出处理程序“ob_gzhandler”不能在第 n 行的文件名中使用两次
所以我想测试 ob_start()
是否已被调用。我认为 ob_get_status()
应该是我所需要的,但是最好的方法是什么在测试中使用它吗?
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();
Now if that script gets included in another script where ob_start() already is in use I get a warning:
Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler' cannot be used twice in filename on line n
So I'd like to test whether ob_start()
has already been called. I think ob_get_status()
should be what I need but what is the best way to use it in testing for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
ob_get_level
返回活动输出控制处理程序的数量,ob_list_handlers
返回这些处理程序的提升。所以你可以这样做:虽然一般来说你可以调用
ob_start
任意次数,使用 < code>ob_gzhandler 作为处理程序不能,因为您会压缩已经压缩的数据。ob_get_level
returns the number of active output control handlers andob_list_handlers
returns a lift of those handlers. So you could do this:Although in general you can call
ob_start
any number of times you want, usingob_gzhandler
as handler cannot as you would compress already compressed data.一般:
更具体
General:
More specific
这样使用怎么样?
if (ob_get_level() == 0) ob_start();
What about using it this way?
if (ob_get_level() == 0) ob_start();