3

我想就如何实施以下内容提出一些建议:

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

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

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

PS 多亏了 stackoverflow 社区,我才能够走到这一步。:)

4

3 回答 3

2

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

于 2009-02-25T23:23:56.833 回答
2

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

另外,这里有几个链接:

使用 COMET 的响应式 AJAX 应用程序

Jquery 中的进度条

以及另一篇 HTTP 流式处理 AjAx 模式文章

根据进度条的“必要性”,我可能会走最后提到的路线 gs 。如果它只是一个帮助用户意识到它比通常处理花费更多时间的功能,那么用估计“欺骗”他们比实时轮询要容易得多。

于 2009-02-25T23:36:18.393 回答
1

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

于 2009-02-25T23:35:53.980 回答