我有两个应用程序,一个 API 及其在 Windows 上的客户端,带有 Nginx 和带有 Fastcgi 的 PHP 7.1。当我从我的 API 向我的客户端或从我的客户端向我的 API 发送 CURL 请求时,它可以正常工作。
另一方面,如果 API 向客户端发送请求,客户端也向 API 发送请求,则情况不再如此。我的第一个请求将在 30 秒后超时,在此期间我无法向客户端发送并行请求。他们都会超时,直到第一个结束。
到目前为止我尝试过的:
我将此添加到我的 Nginx 配置中
fastcgi_read_timeout 120s;
upstream php-cgi {
server 127.0.0.1:9000 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9001 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9002 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9003 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9004 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9005 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9006 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9007 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9008 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9009 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
server 127.0.0.1:9012 max_conns=5 weight=1 max_fails=0 fail_timeout=30s;
}
以下是我使用的 CURL 选项:
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLINFO_HEADER_OUT => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_URL=> MY_URL,
CURLOPT_POSTFIELDS=> MY_DATA,
CURLOPT_CUSTOMREQUEST=> MY METHOD,
CURLOPT_HTTPHEADER=> MY HEADERS
这是我启动服务器的方式:
c:\nginx\RunHiddenConsole.exe c:\nginx\php-7.1\php-cgi.exe -b 127.0.0.1:9005 -c c:\nginx\php-7.1\php.ini
c:\nginx\RunHiddenConsole.exe c:\nginx\php-7.1\php-cgi.exe -b 127.0.0.1:9007 -c c:\nginx\php-7.1\php.ini
c:\nginx\RunHiddenConsole.exe c:\nginx\nginx.exe