【发布时间】:2011-06-11 20:03:59
【问题描述】:
我似乎无法在任何地方找到一个好的答案。如果我正在运行输出缓冲,并且die() 被触发,那是否也会触发ob_end_flush()?
【问题讨论】:
-
脚本结束时我确实看到了挂起的缓冲区(死或不死,CLI 或 HTTP)。我不知道它是否已记录和/或可配置;我同意在手册中找到对它的明确引用会很有趣。
标签: php output-buffering die
我似乎无法在任何地方找到一个好的答案。如果我正在运行输出缓冲,并且die() 被触发,那是否也会触发ob_end_flush()?
【问题讨论】:
标签: php output-buffering die
是的。
但是,如果你有,你可以让输出为空
register_shutdown_function('ob_clean');
在代码的前面。
在某些情况下,我们不想在 die() 上输出 ob。 我在这里写这个,以防它可以帮助任何想要做同样的人。
【讨论】:
是的。任何时候脚本优雅地结束,缓冲区都会被清空。唯一不优雅的结局是分段错误或被杀死(信号 9 SIG_KILL)。 die() 对进程进行硬杀的唯一地方是如果您在 register_shutdown_function 内部调用它(但缓冲区在调用关闭函数之前被刷新,所以那里没有问题)。有关更多信息,请参阅Connection Handling...
【讨论】: