Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel应用程序无法并行处理请求_Php_Ajax_Http_Laravel_Laravel Artisan - Fatal编程技术网

Php Laravel应用程序无法并行处理请求

Php Laravel应用程序无法并行处理请求,php,ajax,http,laravel,laravel-artisan,Php,Ajax,Http,Laravel,Laravel Artisan,我正在构建一个Laravel web应用程序,它执行一些长时间运行的查询,并利用一些(内部和外部)API。我很难弄明白为什么我不能并行处理请求。为了阐明我的问题,以下是通过一个示例对我的系统/问题的概述: 页面加载 在页面加载时调用AJAX请求,该页面加载是一个BigQuery结果集(长时间运行的查询),清理数据并执行python集群算法,该算法创建一个图像并将该图像的路径返回给web应用程序 长时间运行(约15秒) 在执行Python集群时,CPU将达到最大值(有时) 调用的AJAX请求

我正在构建一个Laravel web应用程序,它执行一些长时间运行的查询,并利用一些(内部和外部)API。我很难弄明白为什么我不能并行处理请求。为了阐明我的问题,以下是通过一个示例对我的系统/问题的概述:

  • 页面加载
  • 在页面加载时调用AJAX请求,该页面加载是一个BigQuery结果集(长时间运行的查询),清理数据并执行python集群算法,该算法创建一个图像并将该图像的路径返回给web应用程序
    • 长时间运行(约15秒)
    • 在执行Python集群时,CPU将达到最大值(有时)
  • 调用的AJAX请求,该请求查询外部API以获取某些信息并简单地显示它
    • 短时间运行(约1-2秒)
问题是我的AJAX请求没有被并行处理。收到第一个,web应用程序在第一个完成之前不会开始另一个。我已经检查了Chrome开发工具中的网络选项卡,两个请求都是并行进行的,但是web服务器没有并行处理它们

我无法确定这是否是php、artisan、Laravel配置中的错误,或者是否还有其他问题。我用两个简单的路由闭包做了一些测试:一个简单返回字符串,另一个在
sleep(10)
之后返回字符串。当我使用AJAX调用这两个函数时,立即返回的路由不会返回,直到长时间运行的请求得到服务(在睡眠之后)


TL;DR:很明显,两个AJAX调用都是并行启动和接收的,但是我如何让我的laravelweb应用程序并行(并发)处理请求呢

对于可能需要一段时间的HTTP请求,请使用Laravel的
作业
结构将请求作为作业发送,并使用内置队列或第三方服务提供商处理作业。Laravel不执行并行请求,因此创建了
作业


您遇到的问题与以下线程类似:


API文档:

此站点是在生产服务器上还是在本地宅地上?Apache中有一个MaxClients配置,您可以使用
php artisan serve
检查它是否在本地运行。所以您不是在不同的客户端上测试它?请看一下我提供的最后一个链接中的“请求是否会排队?”部分。答案陈述了你的问题的三个可能的原因。会话阻止请求。因此,如果您正在使用会话,并且一个请求需要一些时间来处理,那么新请求将不得不等待,直到前一个请求完成。