【问题标题】:Does die() do an ob_end_flush()?die() 会执行 ob_end_flush() 吗?
【发布时间】:2011-06-11 20:03:59
【问题描述】:

我似乎无法在任何地方找到一个好的答案。如果我正在运行输出缓冲,并且die() 被触发,那是否也会触发ob_end_flush()

【问题讨论】:

  • 脚本结束时我确实看到了挂起的缓冲区(死或不死,CLI 或 HTTP)。我不知道它是否已记录和/或可配置;我同意在手册中找到对它的明确引用会很有趣。

标签: php output-buffering die


【解决方案1】:

是的。

但是,如果你有,你可以让输出为空

register_shutdown_function('ob_clean');

在代码的前面。

在某些情况下,我们不想在 die() 上输出 ob。 我在这里写这个,以防它可以帮助任何想要做同样的人。

【讨论】:

    【解决方案2】:

    是的。任何时候脚本优雅地结束,缓冲区都会被清空。唯一不优雅的结局是分段错误或被杀死(信号 9 SIG_KILL)。 die() 对进程进行硬杀的唯一地方是如果您在 register_shutdown_function 内部调用它(但缓冲区在调用关闭函数之前被刷新,所以那里没有问题)。有关更多信息,请参阅Connection Handling...

    【讨论】:

      猜你喜欢
      • 2013-12-17
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      相关资源
      最近更新 更多