首先,这样的问题只会出现在Windows+Nginx中。
php-cgi 默认使用的是9000端口,即使多个进程也并发的是9000端口
在用户访问一个php页面的时候nginx已将该进程占用,在该进程又发起http请求时,nginx发现这个仅有的进程已被占用而造成阻塞,就这样造成了死锁,一直到超时。
方法:
启动一个9001端口或其他的php-cgi进程端口。
php-cgi.exe -b 127.0.0.1:9001
在nginx的vhosts.conf 中设置server的fastcgi_pass 端口也与php_cgi 端口相同
fastcgi_pass 127.0.0.1:9001;
server { listen 1002; server_name m.web.com ; root "F:/www/yii/web"; location / { index index.html index.htm index.php; #autoindex on; if (!-e $request_filename){ rewrite ^/(.*) /index.php?r=$1 last; } } 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; } }