之前的项目在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操作。
测试成功。
后续再研究有没有更好的解决办法....