检测输出是否已在php中发送

时间:2011-01-16 09:29:45

标签: php http-headers gzip

如果他们支持,我会通过gzip向浏览器发送内容(对于css / js),目前我只是使用:

stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== False

但是,如果之前有一些输出(即php错误/警告),这会破坏gzip输出,浏览器(至少是firefox)表示该网站正在使用不受支持的压缩形式(因为之前的输出)。

那么,有没有办法检测输出是否已发送?或者有更好的方法吗?

4 个答案:

答案 0 :(得分:4)

你可以使用headers_sent()我相信。

答案 1 :(得分:1)

PHP提供headers_sent()函数来实现此目的。

答案 2 :(得分:1)

为了补充@prodigitalson的响应,这是正确的,你可以使用ob_ *函数,ob_start,ob_start等。这将处理输出缓冲区(ob),并且并不真正发送所有发送的数据。在 ob_start 之后的任何时候,您可以决定刷新( ob_end_flush )缓冲区并且它将被真正发送,但您也可以使用 ob_end_clean 清空缓冲区内容。查看documentation

输出缓冲可以加快响应的传出通信,让你擦除你已经响应的所有内容,这在PHP中始终是个问题。不错的工具。

答案 3 :(得分:0)

你可以使用

ob_start() 使用ob_flush()

捕获生成的任何输出,并将其输出为正确的错误消息或忽略它。