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

时间:2015-04-03 17:53:14

标签: php shell cmd exec

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

2 个答案:

答案 0 :(得分:5)

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

在发送任何输出之前你需要等待执行完成是不正确的,但是你的服务器缓存配置和浏览器渲染引擎有一些警告,所以它不那么可靠。

如果你没有使用Websockets(干净和现代的选项,可以通过PHP使用flush()或使用nodejs使用各种选项实现),那么最可靠的方法就是使用轮询进行操作。

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

有关详细信息,请查看以下答案:

Ratchet

Run process with realtime output in PHP

PHP - Flushing While Loop Data with Ajax

答案 1 :(得分:0)

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

How to show loading status in percentage for ajax response?
Jquery:: Ajax powered progress bar?