【发布时间】:2012-04-28 01:34:45
【问题描述】:
我需要从外部来源接收大量数据。问题是外部源发送数据非常慢。工作流程是这样的:
- 用户从应用程序界面启动一些进程(通常是从本地 xml 文件中获取数据)。这是一个相当快的过程。
- 之后,我们需要加载与从外部来源获取的数据相关的信息(基本上是来自 xml 的数据的外部统计信息)。而且速度很慢。但用户需要此附加信息才能继续工作。例如,他可以根据外部数据或其他东西进行过滤。
所以,我们需要异步进行。主要思想是在外部数据可用时显示它。问题是我们如何组织这个异步过程?也许是一些问题或其他什么?我们使用 php+mysql 作为后端,使用 jquery 作为前端。 非常感谢!
【问题讨论】:
-
有没有办法使用网络服务
-
缓存数据对第 2 部分有帮助吗?
-
请说明——您将获取的数据存储在数据库中还是用于实时显示?你如何从外部来源获取数据?你用 cURL 还是类似的?
-
Maxim,一般来说,您希望在一组端点后面抽象出繁重的操作,这些端点允许您启动作业,然后查询它以完成和获取新数据。这可能就是 @COLDTOLD 所指的 Web 服务。一个示例是两个脚本,begin_statistics.php 和 statistics_status.php。您可以将 XML 发布到 begin_statistics,这将启动对外部服务的异步调用、存储会话令牌并返回作业编号,并且 statistics_status 可以接收该作业编号,然后回复最近的数据。使用 JavaScript 中的轮询循环,您就有了基本的解决方案。
-
另外你可能想考虑websockets,你连接到服务器并开始输出数据,输出数据立即通过套接字发送到客户端,js在客户端输出。但是它只能在现代浏览器上运行,并且您必须准备好服务器端技术,因此最好是 apache 的附加模块。
标签: php javascript jquery asynchronous queue