php 文档建议我应该以 ob_end_flush() 结束每个 ob_start()。我在网站的每个页面上都使用一个,只是为了允许我在应用程序的任何地方使用 firephp 日志方法。
该应用程序运行良好,但我想知道是否有任何我不知道的可能有害的东西。
我认为这个建议的原因是,当不使用其中一个ob_end_*
函数时,PHP 会隐式刷新你的输出缓冲区。虽然不是错误,但这可能会在意想不到的情况下导致问题。PHP 文档试图保护您免受此类问题的影响。如果您知道隐式刷新,这可能不是问题。
您可以将输出缓冲用作
<?php
ob_start();
echo "Some text you want to echo on page!!";
header("Location:somepage.php");
ob_end_flush();
?>
问题是我们在开始发送输出后无法发送标头。为了解决这个问题,我们缓冲输出。函数 ob_start 打开输出缓冲。当输出缓冲处于活动状态时,不会从脚本发送输出(除了标题),而是将输出存储在内部缓冲区中。所以回显输出将被缓冲。接下来我们发送标题没有任何问题,因为我们还没有吐出任何输出。最后我们调用 ob_end_flush 来刷新内部缓冲区内容并停止输出缓冲。
例如,如果有循环,则有人可以开始缓冲。并调用你的函数。当他试图 ob_end_flush 代码收集你的内容时。