AJAX 进度条 - 轮询,彗星?

Posted

技术标签:

【中文标题】AJAX 进度条 - 轮询,彗星?【英文标题】:AJAX Progress Bar - Polling, Comet? 【发布时间】:2009-02-25 22:53:32 【问题描述】:

我想要一些关于如何实现以下内容的建议:

我想让我的用户了解通过 AJAX 在我的服务器上运行的任务的进度。我的服务器运行一个 php 脚本,该脚本使用 popen 函数通过 shell 命令下载文件。它定期回显/打印正在发生的事情。我想使用 AJAX 捕获此输出并将其呈现给用户。

在另一个问题中有人告诉我,我可能需要使用轮询或彗星?我非常感谢任何有关如何以最简单和最有效的方式实现这一目标的帮助或指导。希望我仍然可以使用 JQuery。

感谢大家抽出宝贵时间阅读本文。

附注感谢 *** 社区,我能够走到这一步。 :)

【问题讨论】:

【参考方案1】:

这听起来像是 Ajax 长轮询 的绝佳机会,这是在一般 Comet 实现中使用的无数技术之一。 another question on Stack Overflow 有示例代码。

【讨论】:

谢谢!使用了这种技术......足够接近它的工作。 :)【参考方案2】:

Jim Puls 发布的链接是一个很好的起点。许多用户在这些问题中提供了很多关于 Comet 轮询和 PHP 的重要信息。我见过的大多数地方都推荐使用 python twisted 来完成这项任务。

另外,这里有几个链接:

Responsive AJAX applications with COMET

A Progress Bar in Jquery

And Another HTTP Streaming AjAx Pattern Article

我可能会走最后提到的路线 gs 取决于进度条的“必要性”。如果它只是一个帮助用户意识到处理时间比通常要多一点的功能,那么通过估计来“欺骗”他们比实时投票要容易得多。

【讨论】:

【参考方案3】:

我只是使用常规轮询而不是彗星,因为这更像是一种 hack。为了使 UI 更流畅,您可以作弊并更新您的进度条,而无需检查服务器,只需计算完成一项任务所需的平均时间。您可以通过轮询正确的状态来纠正错误。如果你实施得好,每个人都会认为它是实时更新。

【讨论】:

以上是关于AJAX 进度条 - 轮询,彗星?的主要内容,如果未能解决你的问题,请参考以下文章

基于JQuery的进度条实现

如何在ajax文件上传中显示进度条

ajax页面加载进度条插件

带有大列表的 Ajax 进度条

Symfony Ajax 进度条

Ajax实现带进度条的文件上传