如何判断是否ob_start();已经被调用了

发布于 2024-11-07 01:27:51 字数 438 浏览 0 评论 0原文

我使用输出缓冲进行 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

﹉夏雨初晴づ 2024-11-14 01:27:51

ob_get_level 返回活动输出控制处理程序的数量,ob_list_handlers 返回这些处理程序的提升。所以你可以这样做:

if (!in_array('ob_gzhandler', ob_list_handlers())) {
    ob_start('ob_gzhandler');
} else {
    ob_start();
}

虽然一般来说你可以调用 ob_start 任意次数,使用 < code>ob_gzhandler 作为处理程序不能,因为您会压缩已经压缩的数据。

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.

一身仙ぐ女味 2024-11-14 01:27:51
if (ob_get_level())
    echo "ob already started";
if (ob_get_level())
    echo "ob already started";
紫﹏色ふ单纯 2024-11-14 01:27:51

一般:

if (ob_get_status())  {
  // ob started
}

更具体

$status = ob_get_status();
if ($status['name']=='ob_gzhandler') {
 // ob named ob_gzhandler started
}

General:

if (ob_get_status())  {
  // ob started
}

More specific

$status = ob_get_status();
if ($status['name']=='ob_gzhandler') {
 // ob named ob_gzhandler started
}
盗琴音 2024-11-14 01:27:51

这样使用怎么样?

if (ob_get_level() == 0) ob_start();

What about using it this way?

if (ob_get_level() == 0) ob_start();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文