ob_flush()在我的服务器上不起作用

时间:2018-07-13 15:22:06

标签: php apache io output-buffering

此功能在我的其他服务器上和在我的PC上的本地计算机上都可以完美地运行,每秒显示数字,但是当我从客户端发送云代码时,它仅在页面加载100%后显示结果。

它在这里可以正常工作: http://kicklaunch.me/buffer.php

仅在页面完全加载时: http://raio.adm.br/buffer.php

两个服务器都具有相同的PHP版本5.4.45

<?php
for($i=0; $i<20; $i++) { 
    echo 'printing...'."<p>";
    ob_flush(); 
    flush(); 
    sleep(1); 
}
?> 

解决方案

output_buffering =关闭

ob_implicit_flush(1);

for($i=0; $i<10; $i++){
    echo $i;
    //this is for the buffer achieve the minimum size in order to flush data
    echo str_repeat(' ',1024*64);
    sleep(1);
}

1 个答案:

答案 0 :(得分:1)

正如您所提到的,您在注释中没有看到output_buffering的任何值,我认为您的服务器已将其关闭。

如果您使用自己的服务器,请在Configuration File (php.ini) Path页面(我要求您在注释中创建)中寻找phpinfo选项。

然后打开该文件,找到;output_buffering = Off行,并将其更改为:

output_buffering = 4096

您可能需要重新启动apache服务器(或与之不同的Web服务器)。

================================================ =============

如果您使用共享主机,则大多数主机提供商都可以通过将php.ini文件添加到public_html文件夹中来添加自己的配置。

创建一个名为php.ini的文件,并在其中包含output_buffering = 4096,然后将其上传到您的public_html文件夹中。它应该工作。

希望它会有所帮助:)如果您有任何疑问,请随时提问。