我有一个网页,当用户浏览该网页时,一个PHP脚本会立即发出多个(10-20)Ajax请求,这取决于请求中的参数,将返回一个包含高度聚合数据的不同报告.
问题在于,许多报告需要大量的SQL调用才能获取必要的数据,并且在某些情况下,报告可能需要花费几秒钟来加载.
结果,由于一个客户端向同一个PHP脚本发送多个请求,您最终只能一次将报告缓慢加载到页面上.换句话说,报告的生成不是并行完成的,因此导致页面需要一段时间才能完全加载.
是否有任何方法可以解决PHP中的问题,并可以并行处理从单个客户端到单个PHP脚本的所有请求,以便可以更快地加载页面及其所有报告?
谢谢.
解决方法:
据我所知,可以在PHP中进行多线程.
看一下pthreads extension.
您可以做的是使报表的生成部分/脚本功能可以并行执行.这样可以确保每个函数都在其自己的线程中执行,并且可以更快地检索到结果.另外,将并发线程的最大数量设置为< = 10,这样它就不会成为资源消耗. Here是一个基础教程,可帮助您开始使用pthreads.
还有一些more examples可能会有所帮助(特别是您所用的SQLWorker示例)