2009-02-25 78 views
3

我想就如何实现以下几点建议:AJAX Progress Bar - 投票,Comet?

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

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

谢谢大家花时间阅读本文。

P.S.我能够得到这一点,感谢stackoverflow社区。 :)

回答

2

这听起来像是一个很好的机会,阿贾克斯长轮询,这是一般彗星实施中使用的无数技术之一。有another question on Stack Overflow与示例代码。

+0

谢谢!利用这种技术......足够接近它的工作。 :) – Abs 2009-03-02 11:05:09

1

我只是使用常规轮询而不是彗星,因为这更像是一个黑客。为了使UI更加流畅,你可以使用作弊,并且在不检查服务器的情况下更新你的进度条,只需计算它需要执行任务的平均时间即可。您可以通过轮询正确的状态来纠正错误。如果你实现的很好,每个人都会认为它正在更新。

2

Jim Puls发布的链接是一个很好的开始。该问题中的许多用户提供了关于Comet轮询& PHP的大量信息。我见过的大多数地方都推荐使用python来完成这项任务。

而且,这里的几个环节:

Responsive AJAX applications with COMET

A Progress Bar in Jquery

And Another HTTP Streaming AjAx Pattern Article

我可能会走在末尾提到的路线GS取决于如何 “有必要” 的进展情况酒吧是。如果它只是一个功能,可以帮助用户意识到处理需要的时间比平时多,那么通过估算“欺骗”它们比实时轮询更容易。