AJAX进度条 - 轮询,彗星?

3
我需要一些关于如何实现以下功能的建议:
我想通过 AJAX 让用户了解在我的服务器上正在运行的任务的进度。我的服务器运行一个 PHP 脚本,使用 popen 函数通过 shell 命令下载文件。它会定期地输出正在发生的事情。我希望使用 AJAX 捕获这个输出并呈现给用户。
在另一个问题中,有人告诉我可能需要使用轮询或长连接(comet)?我真的很感激任何帮助或指导,以最简单和最有效的方式实现这一点。希望我仍然可以使用 JQuery。
感谢大家抽出时间阅读此内容。
P.S. 由于 stackoverflow 社区的帮助,我已经取得了这么多的进展。 :)
3个回答

2
这似乎是一个很好的使用机会,可以使用Ajax长轮询技术,这是一种在一般Comet实现中使用的众多技术之一。Stack Overflow上还有另一个问题,其中包含示例代码。请参考此链接

谢谢!我用了那个技巧...差不多,它现在可以工作了。 :) - Abs

2
Jim Puls发布的链接是一个很好的起点。在那个问题中,许多用户提供了有关Comet轮询和PHP的大量信息。我看到的大多数地方都建议使用Python Twisted来完成这个任务。
此外,以下是一些链接:
- 使用COMET创建响应式AJAX应用程序 - Jquery中的进度条 - 另一篇HTTP流AjAx模式文章 如果进度条不是必要的功能,我可能会选择gs最后提到的方法。如果只是为了帮助用户意识到处理时间比通常要长,那么通过估计来“欺骗”他们比实时轮询容易得多。

1

我会建议使用通常的轮询而不是comet,因为后者更像是一种hack。为了使UI更加流畅,您可以 欺骗 并且在不检查服务器的情况下更新进度条,只需计算执行任务所需的平均时间。您可以通过轮询正确的状态来纠正错误。如果您实现得很好,每个人都会认为它是实时更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接