在调试过程中单步浏览PHP代码时(例如在Netbeans中),我想立即在浏览器中看到PHP输出。这可以(至少在使用PHP7.2和Firefox时)通过在PHP代码的开头添加以下内容来实现:
ob_implicit_flush ();
while (@ob_end_flush());
这可以确保类似
echo "foo\n";
立即导致在网络浏览器中显示“ foo”,而不是在输出缓冲区到期刷新或PHP代码在完成或出错时退出。
但是有没有一种方法可以通过编辑php.ini来实现,因此我不必将它包含在所有要调试的PHP代码中? (我知道这会导致性能下降,但这仅出于开发和调试目的。)
答案 0 :(得分: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);