此脚本在10秒后输出,而不是逐步输出:
ob_start(); // Start output buffer (if not enabled in php.ini)
for ($i = 0; $i < 10; $i++) {
echo $i, ' ';
ob_flush();
flush();
sleep(1);
}
我安装了IIS和FastCGI。在PHP.ini中,我有
zlib.output_compression = Off
output_buffering = off
在C:\Windows\System32\inetsrv\Config\applicationHost.config
我有
<add name="PHP_viaFastCGI"
path="*.php"
verb="*"
modules="FastCgiModule"
scriptProcessor="C:\php\php-cgi.exe"
resourceType="Unspecified"
ResponseBufferLimit = "0"/>
所有看似没有效果。
我需要找到在FastCGI中关闭输出缓冲的正确方法
提前致谢
答案 0 :(得分:0)
我遇到了同样的问题,也运行了FastCGI PHP,并通过在我的索引文件中放入以下行来修复它(包括所有其他文件的位置),然后再进行其他操作:
while (@ob_end_flush());
我在PHP docummentation中找到了此命令。
答案 1 :(得分:0)
不了解IIS,但在CentOS中我必须将以下内容添加到/etc/httpd/conf.d/fcgid.conf中:
OutputBufferSize 0
在搜索一小时后找到答案:http://forum.odin.com/threads/mod_fcgid-php-flush-function.91876/
答案 2 :(得分:0)
解决方案在这里:PHP flush - User Contributed Notes
对于使用IIS的Windows系统,
WHITENOISE_USE_FINDERS = True
优先于PHP的responseBufferLimit
设置。所以你还必须设置output_buffering
低于默认值。
简而言之,对于IIS7 +,请编辑responseBufferLimit
文件,然后将%windir%\System32\inetsrv\config\applicationHost.config
添加到responseBufferLimit="0"
处理程序中。
所以整行看起来像这样:
PHP_via_FastCGI
然后,<add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\PHP\php-cgi.exe" resourceType="Either" responseBufferLimit="0" />
和ob_flush()
将开始按预期工作。