2

此脚本在 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 中关闭输出缓冲的正确方法

提前致谢

4

3 回答 3

0

我也遇到了同样的问题,也运行 FastCGI PHP,并通过在我的索引文件(包括所有其他文件的位置)中放入以下行来修复它:

while (@ob_end_flush());

我在PHP 文档中找到了这个命令。.

于 2013-10-23T01:26:03.987 回答
0

不了解 IIS,但在 CentOS 中我必须将以下内容添加到 /etc/httpd/conf.d/fcgid.conf:

OutputBufferSize 0

搜索一个小时后在这里找到了答案:http: //forum.odin.com/threads/mod_fcgid-php-flush-function.91876/

于 2015-10-09T21:45:29.583 回答
0

解决方案在这里:PHP 刷新 - 用户贡献的注释

对于使用 IIS 的 Windows 系统,responseBufferLimit优先于 PHP 的output_buffering设置。因此,您还必须将 设置为responseBufferLimit低于其默认值。

简而言之,对于 IIS7+,编辑%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()flush()开始按预期工作。

于 2020-08-31T13:11:48.720 回答