使用PHP在后台运行许多长cURL请求导致错误504

问题描述 投票:0回答:1

我正在使用Plesk运行Ubuntu 16.04 VPS,托管一些用PHP编码的网站。

其中一个网站有一个功能,通过cURL向另一个服务器发出POST请求(让我们称之为服务器#2)。

当用户按下服务器#1上运行的网站上的按钮时,我需要服务器#1向服务器#2发出POST CURL请求。服务器#2需要大约15-60秒来响应请求。

为了解决用户在我的网站上等待长达60秒的问题,我将慢速CURL请求移动到一个单独的PHP文件中并使用shell_exec调用它。这样,我网站上的用户就不必等待请求完成。它在后台运行。

这是我调用的shell_exec函数:

shell_exec("php slow_request.php '".$parameter.”’ > /dev/null &");

=====

当有多个网站用户同时调用相同的功能时,问题就开始出现了。如果一次发生<5个请求,那么我的网站开始提供504网关超时错误。

我还在error_log上获得以下输出。

连接由对等方重置:[client CLIENT_IP_HERE:****] AH01075:错误分派请求到:[client CLIENT_IP_HERE] AH01067:无法读取FastCGI标头

我已经尝试过Plesk文档中的以下解决方案:https://support.plesk.com/hc/en-us/articles/115000064929-Website-on-Plesk-server-is-not-accessible-504-Gateway-Time-out-The-timeout-specified-has-expired-client-203-0-113-2-54693-AH01075-Error-dispatching-request-to

但是这个解决方案似乎只解决了超过60秒的请求,而不是大量的并发请求。

如何通过shell_exec增加可以同时运行的请求数?

或者有更好的解决方案在后台运行慢速请求而不是shell_exec? (我不能只将请求设置为超时1,因为我需要响应)。

任何帮助将不胜感激。

php apache curl fastcgi
1个回答
0
投票

听起来你应该看看how queues work

© www.soinside.com 2019 - 2024. All rights reserved.