从PHP脚本获取XMLHttpRequest进度

Eva*_*623 5 javascript php xmlhttprequest

我正在使用javascript将XMLHttpRequest运行到返回数据的PHP脚本.基本上我希望能够为用户提供一个进度条(而不是一个旋转的圆圈或其他东西),显示获取和接收数据的进度.我知道如果我得到一个文件,我可以检查内容长度标题并使用它,但是在脚本的情况下,你不知道它检索了多少数据.

对此的答案可能就像"不可能"一样简单,因为现在它似乎就是这样.但总结一下:如何监控正在运行的脚本(php)和XMLHttpRequest的进度?

mel*_*oon 1

我突然想到你可以使用 2 个 ajax 请求。一个用于启动并等待作业完成,另一个用于检查作业进度。我很确定大多数浏览器一次至少可以执行 2 个 ajax 请求。

实际执行该作业的 PHP 脚本(我们称之为 job.php)可以使用作业完成的百分比来更新会话变量 $_SESSION['job_progress']。

您有另一个 PHP 脚本(我们称其为 Progress.php)来回显该值,即

<?php echo $_SESSION['job_progress'];
Run Code Online (Sandbox Code Playgroud)

客户端您向 job.php 发出 ajax 请求。您有另一个对progress.php 的ajax 请求,每3 秒运行一次。您可以使用返回的值更新进度条。

如果对 job.php 的请求在作业完成之前返回,您也可以通过一个 ajax 请求来完成此操作。然后您可以继续使用单个 ajax 请求来 ping Progress.php 脚本。