进度条无法正常工作

时间:2017-08-01 15:45:05

标签: php flush

我遇到了大问题,因为我测试了一切以使其有效,但不是 - 但是:)

我得到了简单的循环,并且里面有一个星,结束,刷新,但我的浏览器仍然加载了循环的所有输出,我接受了这个问题的简单示例:

<?php

if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<10; $i++){

    echo "<br> Line to show.";
    echo str_pad('',4096)."\n";    

    ob_flush();
    flush();
    sleep(2);
}

echo "Done.";

ob_end_flush();
?>                              

一个i`vd设置所有关于outpuuting_bufforing,zlib,gzib和其他所有。特别是在htacces,脚本,文件,甚至在php.ini,apache中。我得到了dedicaded服务器,所以可以配置我需要的东西。有人可以告诉我我还能尝试什么? Ofc在任何日志文件中都没有错误。

感谢您的建议!

1 个答案:

答案 0 :(得分:0)

ob_flush()的官方PHP文档中的注释提到,大多数浏览器都有一种加载内容的全有或全无的方法。因此,在整个页面加载之前,浏览器不会显示任何内容。

请参阅http://php.net/manual/de/function.ob-flush.php#109699

这意味着刷新输出到浏览器将不适合您。

另一种方法是通过AJAX启动初始请求,然后使用第二个请求提供有关当前progess的信息。