天天看点

windows下nginx+php-cgi子进程问题(解决curl_exec超时问题)

正常的配置情况下,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

继续阅读