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

ob_flush () does not work on my server

此功能在我的其他服务器和本地电脑上完美运行,每秒显示数字,但是当我从我的客户端发送云代码时,它仅在页面加载 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);
}

正如您提到的,您在评论中没有看到 output_buffering 的任何值,我假设它在您的服务器中已关闭。

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

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

output_buffering = 4096

您可能需要重新启动您的 Apache 服务器(或您的网络服务器,如果它不同的话)。

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

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

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

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