【问题标题】:How to display cURL progress bar in browser (using PHP exec() function)如何在浏览器中显示 cURL 进度条(使用 PHP exec() 函数)
【发布时间】:2016-12-20 10:12:26
【问题描述】:

我正在使用这个小小的 PHP 代码来将任何文件镜像到我的服务器中。

<?php
 $cmd= "curl -L -O http://www.dropbox.com/s/8lu0nutt4tgpkku/jbtools.ipa";
 exec($cmd);
?>

但是在镜像过程完成之前,浏览器会冻结。我的问题是,当我在终端中运行此命令时,如何显示进度条。像这样:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed

我尝试了许多标志,例如:

-v --verbose -I -include --trace -

但他们都没有工作。我还问了一个问题here 将其转换为 PHP CURL 代码,但没有人可以帮助我!

如果不可能,非常感谢建议我通过任何其他命令执行相同的工作。

【问题讨论】:

  • 使用 ob_flush() 在加载内容完成之前将数据发送到浏览器,或者,您可以将状态写入会话并通过另一个页面访问它。有关真正的 php curl 函数,请参见 php.net。如果您想在 php 中使用它,您的代码更像是一种解决方法,并且不好
  • 我确实尝试过 cURL,但我卡在了某个点上,但没有人能帮助我!你可以看看吗? stackoverflow.com/questions/38427001/…
  • 代码看起来不错。我找不到 adcdownload.com。
  • 该链接不再有效。刚刚更新了帖子;请检查一下。顺便说一句,我在 Apple 开发者门户中使用“-b cookies.txt”(用于身份验证),因此新链接是 Dropbox 链接,我认为我们不需要这个标志!
  • 我已经告诉过你,我找不到任何错误。代码引发的错误是什么?

标签: php curl command-line terminal verbose


【解决方案1】:

最简单的方法是轮询。 在后台执行脚本并将前端(js)可以轮询的输出(到文件)定向。

通过示例在后台执行: https://felixmilea.com/2014/12/running-bash-commands-background-properly/

在 shell 中显示进度可以通过管道到 pv 来完成: http://linux.die.net/man/1/pv

考虑用 websockets 试试这个: http://reactphp.org/ - 看看 rachet 项目。 这将为您提供您想要执行的任何内容的实时输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2014-11-18
    • 2015-01-01
    • 2014-05-03
    • 1970-01-01
    • 2017-02-15
    相关资源
    最近更新 更多