我需要从外部来源收到大量数据。问题是外部源发送数据非常慢。工作流程如下:
所以,我们需要异步进行。主要思想是在外部数据可用时显示。问题是我们如何组织这个异步过程?也许一些问题或其他什么?我们在前端使用php + mysql作为后端和jquery。 非常感谢!
答案 0 :(得分:1)
您可能的两种策略是:
在后端进行流式传输,使用将大型外部资源卷入数据库或内存缓存的PHP脚本,并通过刷新该数据库行来响应新数据的周期请求或缓存到响应中。
使用this answer中解释的跨浏览器JavaScript技术,在前端进行流式传输。在Gecko和WebKit中,每次接收到新数据时都会触发XmlHttpRequest.onreadystatechange
事件,从而可以将数据缓慢地传输到JavaScript运行时。在IE中,您需要使用iframe解决方法,也在上面的SO帖子中链接的Ajax Patterns article进行了解释。
答案 1 :(得分:0)
一种可能的解决方案是使用system()
进行cURL调用,并将输出重定向到文件中。因此,在调用完成之前,PHP不会挂起。来自system()
的PHP手册:
如果使用此功能启动程序,为了使其在后台继续运行,必须将程序的输出重定向到文件或其他输出流。如果不这样做将导致PHP挂起,直到程序执行结束。
这会将数据收集从用户界面中分离出来。然后,您可以通过多种方式处理收集的本地数据,例如: