正常的配置情况下,window的nginx+php-cgi是不会出现多线程/子进程的,如下配置
fastcgi_pass 127.0.0.1:9000;
这时也就意味着当两个php文件同时请求解析时,就会出现阻塞处理。
如果后一个请求需要等待前一个请求返回的结果才能执行,则进入死循环,直到报504超时。
解决办法是: 既然php-cgi不能自动创建子进程,就先手动开启多个php-cgi进程。
启动nginx脚本如下:
@echo off
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole F:\php_nts\php-cgi.exe -b 127.0.0.1:9000 -c F:\php_nts\php.ini
RunHiddenConsole F:\php_nts\php-cgi.exe -b 127.0.0.1:9001 -c F:\php_nts\php.ini
RunHiddenConsole F:\php_nts\php-cgi.exe -b 127.0.0.1:9002 -c F:\php_nts\php.ini
RunHiddenConsole F:\php_nts\php-cgi.exe -b 127.0.0.1:9003 -c F:\php_nts\php.ini
echo Starting nginx...
RunHiddenConsole F:\nginx\nginx.exe -p F:\nginx
开启4个进程备用
nginx的配置
http下追加下面配置:
http {
upstream fastcgi_backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
}
}
server下的fastcgi_pass改为:
server {
location ~ \.php$ {
fastcgi_pass fastcgi_backend;
}
}
这样就可以同时打开4个php是可以独立解析了。
5个呢?
继续手动开启进程 或者 等等吧..........
转载于http://blog.csdn.net/qidizi/article/details/31580033