提问人:ParoX 提问时间:9/27/2022 最后编辑:OlivierParoX 更新时间:10/3/2022 访问量:382
如何在不抑制错误的情况下正确刷新缓冲区
How to properly flush buffer without error suppression
问:
我多年前发现了这个片段,它总是对我很好,但我最近发现,任何自定义错误处理程序都会忽略并且仍然触发。error_get_last()
@
推荐的方法是检查是否符合 https://www.php.net/manual/en/language.operators.errorcontrol.php#104545error_reporting() == 0
与其为骇人听闻的解决方法做一个骇人听闻的解决方法,我宁愿根本不使用错误抑制,但我不清楚如何正确设置条件以使这个狙击手正常运行。谷歌搜索表明使用,并以各种但相互矛盾的方式使用。ob_get_level()
ob_get_length()
ob_get_contents()
删除错误抑制并将 if 语句检查添加到以下内容的最佳方法是什么:
// Fill-up 4 kB buffer (should be enough in most cases).
echo str_pad('', 4 * 1024);
echo '<!-- -->';
// Flush all buffers.
do {
$flushed = @ob_end_flush();
} while ($flushed);
@ob_flush();
flush();
答:
2赞
Olivier
10/3/2022
#1
如本说明所示,可以按以下方式刷新所有输出缓冲器:
while (ob_get_level() > 0) {
ob_end_flush();
}
flush();
评论