在PHP中,是否有(现成的)方法来检查输出的一部分是否已经发送到客户端?
我知道使用headers_sent()
您可以检查标头是否已经发送,但我还想检查是否已发送任何输出(例如HTTP标头{ {1}}> 0)。
(请注意, Content-Length
从调用它的那一刻开始输出缓冲。但是实现我的代码的第三方系统可能已经发送了输出,因此输出缓冲是据我所知,无法使用。)
答案 0 :(得分:3)
您可以将自己的ob_start包装在其他所有内容中,并在您决定时将其刷新。即使其他ob_start和刷新在里面,它也能工作。举个例子:
ob_start();
[...]
//some 3rd party app which is included on the way
[...]
ob_start();
[...]
ob_flush(); //at this moment the buffer isn't flushed to the client
//but to the parent ob_start, which is yours, so no output
//is sent yet
[...]
//ok, we're done, we can output now
ob_flush();
答案 1 :(得分:1)
在大多数情况下,PHP仅使用某些内容或在脚本执行结束时向Apache发送标头。因此,如果发送标头,则也会发送一些内容。此外,据我所知,Content-Length
无论如何都会在脚本执行后计算出来。