search

Home  >  Q&A  >  body text

php有没有办法检测出程序运行到此处之前有无输出?

注意我并不是想解决header()的问题,只是程序中有一个功能有这个需求。
反之,我倒是想过是不是可以通过发个header来检测,或者set个cookie(一个道理)。但是据说php有个output_buffering机制,搞得这条路又行不通了。因为把这个机制残忍地关闭可能会导致一些其它不可预期的问题,而且不是所有环境都能关闭的。
就算行得通,但cookie总是慢一拍,不能set完马上获取到。发个header又会导致没用的东西掺杂在http头中。

那。。。

有什么办法达到这个需求呢?

(我并不想修改程序其他部分的代码)


高洛峰高洛峰3062 days ago685

reply all(1)I'll reply

  • 三叔

    三叔2016-10-24 10:58:42

    php的输出机制并不是使用完了echo 之类的指令就会立即输出的,而是先将这部分内容放到一个缓冲区里区。(所谓缓冲区就是一块共享内存),等内存满了或者脚本结束的时候,php才会将这块内存交付给nginx或者apache来输出。
    因此,要想实现你的需求,只需要判断缓冲区里有没有内容即可。
    php给我们提供了这样的函数,即
    ob_get_contents

    reply
    0
  • Cancelreply