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

WBOY
发布: 2016-10-10 11:56:08
原创
1200 人浏览过

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

那。。。

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

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

回复内容:

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

那。。。

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

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

使用 headers_sent() 判断头是否发出是不是可以满足你的需求?的如果已经输出内容了,headers 肯定已经发送过了。

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

相关标签:
php
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板