我正在构建一个Laravel Web应用程序,它可以执行一些长时间运行的查询并使用一对(内部和外部)API。我很难搞清楚为什么我无法并行处理请求。为了解释我的问题,以下是我的系统/问题的高级概述:
GET
是一个BigQuery结果集(长时间运行的查询),清理数据并执行python聚类算法,该算法创建一个图像并返回该图像的路径到网络应用程序
问题是我的AJAX请求没有被并行处理。收到第一个并且Web应用程序在第一个完成之前不会从另一个开始。我已经检查了Chrome开发工具中的网络标签,并且两个请求都是并行进行的,但是Web服务器并没有并行处理它们。
我无法确定这是配置错误的php,artisan,Laravel还是我手上还有其他问题。我用两个简单的路由闭包完成了一些测试:一个只返回一个字符串,另一个在sleep(10)
之后返回一个字符串。当我用AJAX调用两者时,在提供长时间运行的请求(睡眠后)之前,即时返回的路由不会返回。
TL; DR :很明显,两个AJAX调用都是并行触发和接收的,但是如何让我的Laravel Web应用程序并行处理请求(并发)?
答案 0 :(得分:1)
对于可能需要一段时间的HTTP请求,请使用Laravel的job
结构将请求作为作业发送,并使用内置队列或第三方服务提供程序来处理作业。 Laravel不执行并行请求,因此创建了job
。
您的问题类似于以下主题:
handle multiple post requests to same url Laravel 5
API文档:
https://laravel.com/docs/5.1/queues#configuration