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

在调试期间(例如在 Netbeans 中)单步执行 PHP 代码时,我想立即在浏览器中看到 PHP 输出。这可以通过在 PHP 代码的开头包含以下内容来实现(至少在使用 PHP7.2 和 Firefox 时):


  ob_implicit_flush ();

  while (@ob_end_flush());

这确保了像


echo "foo\n";

立即导致 'foo' 显示在 Web 浏览器中,而不是在输出缓冲区需要刷新或 PHP 代码在完成或错误时退出时显示。


但是有没有办法通过编辑 php.ini 来实现这一点,这样我就不必将它包含在要调试的每一段 PHP 代码中?(我知道这会导致性能下降,但这仅用于开发和调试目的。)


慕盖茨4494581
浏览 201回答 1
1回答

一只斗牛犬

刷新输出缓冲区是开发人员必须执行的隐式操作,因此不能在 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);
打开App,查看更多内容
随时随地看视频慕课网APP