【问题标题】:How to display progress bar in PHP exec functions如何在 PHP exec 函数中显示进度条
【发布时间】:2015-04-03 17:53:14
【问题描述】:

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

【问题讨论】:

  • PHP 在服务器上执行,完成前不会返回任何值。

标签: php shell cmd exec


【解决方案1】:

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

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

如果您不使用 Websockets(干净和现代的选项,可以使用 PHP 使用 Ratchet 或使用 nodejs 使用各种选项来实现),最可靠的方法是使用轮询。

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

有关更多信息,请查看这些答案:

Run process with realtime output in PHP

PHP - Flushing While Loop Data with Ajax

Grab results from a php exec() while the command is still running?

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      相关资源
      最近更新 更多