我正在使用Plesk运行Ubuntu 16.04 VPS,并托管了一些用PHP编码的网站。
其中一个网站具有通过cURL向另一台服务器发出POST请求的功能(我们称其为服务器#2)。
当用户按下服务器1上运行的网站上的按钮时,我需要服务器1向服务器2发出POST CURL请求。 服务器#2大约需要15-60秒才能响应请求。
为解决用户在我的网站上等待60秒的问题,我将缓慢的CURL请求移到了单独的PHP文件中,并使用shell_exec对其进行了调用。 这样,我网站上的用户不必等待请求完成。它在后台运行。
这是我正在调用的shell_exec函数:
role Maybe[::T] {
# ...
}
sub foo(--> Int) { rand < 0.5 ?? 1 !! fail 'oops' }
my Maybe[Int] $foo = foo;
=====
当有多个网站用户同时调用同一功能时,就会出现此问题。如果一次有5个请求,则我的网站开始显示504网关超时错误。
我的error_log上也得到以下输出。
对等方重置的连接:[客户端CLIENT_IP_HERE:****] AH01075:将请求分发到时出错: [客户端CLIENT_IP_HERE] AH01067:无法读取FastCGI标头
但是这种解决方案似乎只能解决耗时60秒以上的请求,而不是大量并发请求。
如何通过shell_exec增加可以同时运行的请求数?
还是有比shell_exec更好的解决方案来在后台运行缓慢的请求? (我不能只是将请求的超时时间设置为1,因为我需要响应)。
任何帮助将不胜感激。