我正在使用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标头
但是这个解决方案似乎只解决了超过60秒的请求,而不是大量的并发请求。
如何通过shell_exec增加可以同时运行的请求数?
或者有更好的解决方案在后台运行慢速请求而不是shell_exec? (我不能只将请求设置为超时1,因为我需要响应)。
任何帮助将不胜感激。
听起来你应该看看how queues work