在windows+nginx的curl操作请求超时的问题

之前的项目在apache下进行本地curl操作的时候请求不会超时

后来要在nginx下开发的时候,我在项目中写一个curl操作的test.php文件,请求相同项目下的一个index.php文件,然后curl请求超时,就是一直在转圈圈,没有返回

然后查了一些网上的资料,http://aarons.blog.51cto.com/2383032/1583871

里面提到,在nginx中,请求都是keep-alive的,就是我执行一个curl操作的test.php文件,这个时候php-cgi开始处理test.php,然而这个test.php还没处理完,当前的端口被占用,所以无法请求index.php

这个index.php要等test.php处理完之后,才有不会占用当前端口,而要处理完test.php必须先处理好index.php,所以curl一直处于等待状态,程序卡死

里面提到一个解决办法,就是

在命令行开启一个cgi

e:phpstudyphpphp-5.6.27-ntsphp-cgi.exe -b 127.0.0.1:9001 -c e:phpstudyphpphp-5.6.27-ntsphp.ini(不能关闭)

然后在要进行curl请求的url的nginx配置中

location ~ .php(.*)$  {
           fastcgi_pass   127.0.0.1:9001;
           fastcgi_index  index.php;
           fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           fastcgi_param  PATH_INFO  $fastcgi_path_info;
           fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
           include        fastcgi_params;
       }
开启之后,不能用刚才同个项目的test.php进行curl操作,要在另一个域下创建一个新的test.php进行curl操作。
测试成功。
 
后续再研究有没有更好的解决办法....
原文地址:https://www.cnblogs.com/chiruno/p/6490710.html