为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在 php.ini 中使用等效的 ob_implicit_flush()

我可以在 php.ini 中使用等效的 ob_implicit_flush()

PHP
慕盖茨4494581 2021-06-30 18:54:16
在调试期间(例如在 Netbeans 中)单步执行 PHP 代码时,我想立即在浏览器中看到 PHP 输出。这可以通过在 PHP 代码的开头包含以下内容来实现(至少在使用 PHP7.2 和 Firefox 时):  ob_implicit_flush ();  while (@ob_end_flush());这确保了像echo "foo\n";立即导致 'foo' 显示在 Web 浏览器中,而不是在输出缓冲区需要刷新或 PHP 代码在完成或错误时退出时显示。但是有没有办法通过编辑 php.ini 来实现这一点,这样我就不必将它包含在要调试的每一段 PHP 代码中?(我知道这会导致性能下降,但这仅用于开发和调试目的。)
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

刷新输出缓冲区是开发人员必须执行的隐式操作,因此不能在 php.ini 中打开或关闭。

但是,PHP 确实有一个名为 的功能ticks,它允许开发人员注册一个回调函数,以便每执行 X 行代码调用一次。

请参阅register_tick_function,您可以在其中定义自己的回调函数来执行刷新,并让它在程序中的每个语句之间运行。这显然会降低性能,并且可能有更好的方法来实现您想要做的事情。

例子:

declare(ticks=1);

function autoFlushBuffer() {

  ob_implicit_flush ();

  while (@ob_end_flush());

}

register_tick_function("autoFlushBuffer", true);


// The following lines will appear in your web browser one by one:

echo "one";

sleep(1);

echo "two";

sleep(1);

echo "three";

sleep(1);


查看完整回答
反对 回复 2021-07-02
  • 1 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信