如何在不抑制错误的情况下正确刷新缓冲区



我多年前发现了这个代码段,它总是对我很好,但我最近发现error_get_last()和任何自定义错误处理程序都会忽略@并且仍然触发。

建议的方法是检查是否error_reporting() == 0按照 https://www.php.net/manual/en/language.operators.errorcontrol.php#104545

与其为黑客变通方法制定一个笨拙的解决方法,我宁愿根本不使用错误抑制,但我不清楚如何正确设置条件以使此狙击手正常运行。谷歌搜索表明使用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();

如本说明所示,可以通过以下方式刷新所有输出缓冲区:

while (ob_get_level() > 0) {
ob_end_flush();
}
flush();

相关内容

  • 没有找到相关文章

最新更新