Php 为什么我需要结束我的ob_start()?

Php 为什么我需要结束我的ob_start()?,php,ob-start,Php,Ob Start,php文档建议我应该用ob_end_flush()结束每个ob_start()。我在网站的每个页面上都使用了一个,只是为了让我可以在应用程序的任何地方使用FireHP日志方法 该应用程序运行良好,但我想知道是否有什么我不知道的可能是有害的 我认为这个建议的原因是,当不使用ob\u end.*函数时,PHP会隐式刷新输出缓冲区。虽然这不是一个错误,但在没有预料到的情况下可能会导致问题。PHP文档试图保护您免受此类问题的影响。如果您知道隐式刷新,这可能不是问题。您可以将输出缓冲用作 <?php

php文档建议我应该用ob_end_flush()结束每个ob_start()。我在网站的每个页面上都使用了一个,只是为了让我可以在应用程序的任何地方使用FireHP日志方法


该应用程序运行良好,但我想知道是否有什么我不知道的可能是有害的

我认为这个建议的原因是,当不使用
ob\u 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来刷新内部缓冲区内容并停止输出缓冲。

例如,如果存在循环,则可以开始缓冲。并调用您的函数。当他试图结束时,代码会收集你的内容