php 进度条与输出缓冲区

问题描述 投票:0回答:1

我在 Apache 上使用 php 8.0 fpm 和 proxy_fcgi。

Server version: Apache/2.4.58 (Ubuntu)

我有一个 PHP 脚本,需要大约 20 秒才能执行... 我想要一个显示完成百分比的进度条。 我正在使用 javascript 函数与 PHP 端的 flash() 和 ob_flush() 结合使用来修改进度条。

    $Flush_String=str_repeat(".", 4100);//for php flush purposes...
    echo "<script type='text/javascript'>Update_Progress($percent,\"$text\")</script>";
    echo "<script type='text/javascript'>document.getElementById(\"nothing_div\").innerHTML=\"$Flush_String\";</script>";//for flush purposes...
    ob_flush();
    flush();

但是,apache 似乎正在自行缓冲...

我尝试将其包含在我的 Apache 配置文件的 VirtualHost 部分中

<Proxy "fcgi://localhost/" enablereuse=on flushpackets=on max=10>
</Proxy>

但这让我的服务器抛出一些奇怪的 proxy_fcgi:error

有人对在 Apache2 上使用 php-fpm 成功刷新有什么建议吗?

还有其他创建进度条的策略吗?

谢谢

php apache
1个回答
0
投票

好的,根据Utmost Creator的评论,我这样做了:

header('Content-Encoding: none');

ob_implicit_flush()、flush()、ob_flush() - 不适用于远程服务器

进度条现在工作正常......

但是我会继续尝试一些东西,因为这个解决方案似乎有点变化无常,因为有时像

session_start();
这样的东西会破坏解决方案......

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.