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

时间:2011-06-17 12:24:22

标签: php buffer flush

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

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

}

虽然这在我的本地Wamp服务器上按预期工作,但每次调用该函数时都会显示输出,但它不在联机Web服务器上:此处仅在脚本结束后才会发送输出。 那怎么样?

1 个答案:

答案 0 :(得分:4)

确保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);
相关问题