3

我需要从外部来源接收大量数据。问题是外部源发送数据非常慢。工作流程是这样的:

  1. 用户从应用程序界面启动一些过程(通常是从本地 xml 文件中获取数据)。这是一个相当快的过程。
  2. 之后,我们需要加载与从外部源获取的数据相关的信息(基本上是来自 xml 的数据的外部统计信息)。而且速度很慢。但用户需要此附加信息才能继续工作。例如,他可以根据外部数据或其他东西进行过滤。

所以,我们需要异步进行。主要思想是在外部数据可用时显示它。问题是我们如何组织这个异步过程?也许是一些问题或其他什么?我们使用 php+mysql 作为后端,使用 jquery 作为前端。非常感谢!

4

2 回答 2

1

您的两种可能的策略是:

  1. 在后端进行流式传输,使用 PHP 脚本将大型外部资源卷曲到数据库或内存缓存中,并通过将该数据库行或缓存刷新到响应中来响应对新数据的周期请求。

  2. 使用此答案中解释的跨浏览器 JavaScript 技术在前端进行流式传输。在 Gecko 和 WebKit 中,XmlHttpRequest.onreadystatechange每次接收到新数据时都会触发该事件,从而可以将数据缓慢地流式传输到 JavaScript 运行时。在 IE 中,您需要使用 iframe 解决方法,在上述 SO 帖子中链接的Ajax 模式文章中也进行了说明。

于 2012-04-16T18:10:06.470 回答
0

一种可能的解决方案是使用system()在文件中重定向的输出进行 cURL 调用。因此 PHP 在调用完成之前不会挂起。来自 PHP 手册system()

如果使用此函数启动程序,为了使其继续在后台运行,程序的输出必须重定向到文件或另一个输出流。否则将导致 PHP 挂起,直到程序执行结束。

这将拆分从用户界面收集的数据。然后,您可以通过多种方式处理收集到的本地数据,例如:

  • 在 GUI 中使用 iFrame,它会在一定间隔内刷新自身并从本地存储的文件中获取数据(并可能将其存储在数据库中或其他任何地方),
  • 使用 jQuery 进行 AJAX 调用以获取数据并对其进行操作,
  • 使用一些将在后台运行的 CGI 脚本并处理数据库写入,并直接使用数据库中的上述之一显示数据,
  • 还有几十个我现在想不起来了……
于 2012-04-16T18:13:45.770 回答