【发布时间】:2014-06-09 15:43:00
【问题描述】:
有没有办法在 PHP 中禁用自动输出缓冲区刷新?我总是可以使用 ob_clean (或派生函数之一),但这仍然会给我们留下代码执行中断的情况。包含缓冲区清理的正确错误处理程序将再次处理其中的大部分。但是如果例如脚本在执行过程中遇到 die / exit 命令怎么办?它将终止脚本并且缓冲区内容仍将自动刷新到客户端。 100% 确定的唯一方法似乎是完全禁用自动刷新。但我不确定如何实现(如果可能的话)。
【问题讨论】:
-
您是否验证过缓冲区没有被简单地刷新,因为它已满?如果是这种情况,那么唯一的方法是增加缓冲区大小(不知道如何)。
-
对于初学者,您不应该在代码中使用 die 或 exit,尤其是在输出未决的地方。在大多数情况下,脚本应该有一个 bootstrap.php 文件,该文件从头到尾运行。它在脚本开始时开始,在脚本结束时也开始。
-
我知道这一点。但我问这个问题是为了清理一个古老的大型项目。那里有很多代码,由几个人和一些部分从 1999 年开始编写(显然很多非常糟糕的代码,我已经不得不处理 SQL 注入漏洞)。我能做的最好的事情是将每个输出抓取到缓冲区并进行处理。它似乎工作正常,但上帝知道是否没有什么东西会以我没有预料到的方式终止脚本。至少在这方面没有自动刷新能让我确定。
标签: php output-buffering