PHP缓冲输出取决于服务器设置?

PHP缓冲输出取决于服务器设置?,php,buffer,flush,Php,Buffer,Flush,我使用以下代码在db维护脚本上生成缓冲输出: function flush_buffers($string){ echo $string; ob_end_flush(); ob_flush(); flush(); ob_start(); } 虽然这在我的本地Wamp服务器上按预期工作,每次调用函数时都显示输出,但在联机web服务器上却没有:在这里,输出只在脚本结束后发送。 这是怎么回事?确保web服务器上的php.ini文件中的输出缓冲已关闭 您也不必

我使用以下代码在db维护脚本上生成缓冲输出:

function flush_buffers($string){
    echo $string;
    ob_end_flush();
    ob_flush();
    flush();
    ob_start();

}
虽然这在我的本地Wamp服务器上按预期工作,每次调用函数时都显示输出,但在联机web服务器上却没有:在这里,输出只在脚本结束后发送。
这是怎么回事?

确保web服务器上的php.ini文件中的输出缓冲已关闭

您也不必每次都手动刷新,您可以利用:

ob_implicit_flush(true);
ob_end_flush();
您还应该记住,这仍然是特定于浏览器的。浏览器将决定是否显示输出。一些浏览器(例如IE6)在有足够的字符输出之前不会输出任何内容

以下内容将关闭所有可能导致不必要的输出缓冲的功能

@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);
for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); }
ob_implicit_flush(1);
@apache_setenv('no-gzip',1);
@ini_集('zlib.output_compression',0);
@ini_集(“隐式_刷新”,1);
对于($i=0;$i
您的web服务器是否有PHP无法控制的额外缓冲?例如,我相信IIS通常会这样做。Netcraft报告:“Apache mod_fcgid/2.3.5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635”@dqhendricks,flush()手册声明可能会发生某些服务器重写:-(@wisegay,请参阅flush()php手册的第二条评论(由用户“brudinie”)@Abs,两台服务器上的同一个浏览器:一台工作,一台不工作。将要求管理员检查PHP.ini文件中的设置。Thanks@Riccardo-您可以使用
phpinfo()
做一个快速test.php脚本,您可以在浏览器中查找
output\u buffering
指令。@Abs没有设置:output\u buffering“无值,无值”@Riccardo您的WAMP服务器设置了什么?顺便说一句,mandor在php.net中给出了一个很好的评论。我用它更新了我的问题。@Abs,这是正确的。@Jarrod,它过去在生产服务器上工作,但由于资源使用限制,它可能已被关闭。