如何在PHP执行函数中显示进度条


How to display progress bar in PHP exec functions

我正在使用它的exec()函数在PHP中运行一个外部脚本。我在寻找各种选项来创建进度条。我可以通过AJAX创建一个普通的旋转加载程序,但我无法实现百分比进度条。有办法做到这一点吗?

根据要执行的程序,您可以使用proc_open()而不是exec(),这样您就可以处理输出,计算百分比,并使用ob_flush()和flush()将其返回到ajax脚本。

在发送任何输出之前,您不需要等待执行完成,但服务器缓存配置和浏览器渲染引擎有一些注意事项,因此它不那么可靠。

如果你不使用Websockets(这是一个干净而现代的选项,可以通过使用Ratchet的PHP或使用各种选项的nodejs来实现),那么最可靠的方法就是轮询。

简单地说,您不需要调用脚本一次,而是执行第一个ajax请求来初始化进程,然后开始一次又一次地戳服务器来询问脚本的执行状态。

有关更多信息,请查看以下答案:

在PHP 中运行具有实时输出的进程

PHP-用Ajax 刷新循环数据

在命令仍在运行时从php exec()获取结果?

PHP在服务器上运行,因此无法实现这一点(据我所知),以下是一些已回答的问题,可能会对您有所帮助。

如何显示ajax响应的加载状态百分比
Jquery::Ajax支持的进度条?