suPHP使用无缓冲输出


suPHP using unbuffered output?

我在一个使用suPHP的共享主机上有一个脚本。我需要无缓冲的输出(这样我就可以在开始一个冗长的子例程之前刷新),但是无论如何都找不到让它工作的方法,所以我的刷新调用基本上被忽略了。我试过调整。htaccess(导致500内部错误),我试过修改php.ini在帐户级别和文件夹级别的特定脚本(这两者似乎完全被忽略了,我不能例如禁用php引擎与引擎= Off或suphp_engine = Off)。

如何禁用缓冲(可能需要询问我的主机提供商,但我要要求他们具体更改什么)?这在suPHP中是可能的吗?

在与我的主机支持人员讨论之后,我终于使php.ini得到了识别,但是禁用或更改缓冲区大小没有效果。它的文档记录相当糟糕(据我所知,php官方文档上有一条评论),但似乎suPHP缓冲了内部php缓冲区之后的所有输出。所以冲水成功了…但是所有的输出都会被suPHP再次缓冲,这是没有办法的。因此,如果您使用suPHP,您就会被困在第二个无法关闭的缓冲区后面,最终结果是刷新将没有效果。您可以使用其他缓冲区命令来控制流,例如缓冲,这样您就可以通过脚本进一步发送标头,但是suPHP背后的总输出在输出之前会经过一个缓冲区。

执行flush()时会发生什么?您是否得到一个错误,或者只是没有输出?如果在web服务器级别发生缓存,则可能需要填充其缓冲区以使刷新生效。尝试在刷新之前发送大量空白,看看它是否更有效。