0

我所拥有的是服务器上的一个进程,该进程运行并需要大量时间。它本质上构建了一些数据表,这些数据表在回发时显示在页面上。

我想要的是一种在服务器进程运行时在某处记录进度的方法,并在使用完成的数据刷新之前在我正在查看的页面上报告该进度。

这甚至可能吗?我能想到的最好方法是将进度记录到服务器上的文件中,并通过 Ajax/Javascript 定期读取文件内容,但这似乎是一个杂项。

也许这可以使用多个页面或线程。我不知道。

有什么建议么?

编辑:
主要目标是在网页上显示某种进度条以显示上述进度。

4

3 回答 3

3

这甚至可能吗?

是的,但这并不容易,也不漂亮。

我能想到的最好方法是将进度记录到服务器上的文件中,并通过 Ajax/Javascript 定期读取文件内容,但这似乎是一个杂项。

是的,差不多。其他选项是使用数据库来存储信息或会话,但任何可以通过 Ajax 请求以某种方式访问​​的存储位置都可以使用。毫无疑问,您会想要创建一个 Web 服务或类似的东西来抽象出您使用的任何存储方法。

是 Microsoft 示例中该通用方法的实现。它使用 Session 来存储当前进度,并且严重依赖基于 ASP 的构造。

另一种方法完全是在客户端和服务器之间设置一个 websocket,这将允许您将信息从服务器推送到客户端。它可能会表现得更好(减少网络 IO),尽管设置起来可能并不容易。不过,我没有任何示例(或尝试过)这样的解决方案。

于 2013-01-03T22:26:16.200 回答
0

ajax 、 ajax 、 xhr、 jsonp,在您的流程中有里程碑,因此您可以提供状态

于 2013-01-03T22:27:25.730 回答
0

如果您正在运行的进程独立于您的页面(例如,服务器内的 shell 脚本),您可以将此脚本的中间结果写入 javascript 可访问的文本文件中(例如http://contosoweb.com /web/log.txt ),并使用计时器和一些 jquery 从页面定期更新它。

这里有 jQuery Docs 中的 .Ajax 信息:http: //api.jquery.com/jQuery.ajax/

在这里如何使用计时器:How to set a timer in javascript

于 2013-01-03T22:40:11.643 回答