Windows 7 Windows PHP-FPM可以同时处理多个请求吗?
我目前正在使用nginx和PHP-FastCGI,但这种安排受到限制,一次只能服务一个HTTP请求。(请参阅。)我通过执行以下操作从Windows命令提示符启动PHP:Windows 7 Windows PHP-FPM可以同时处理多个请求吗?,windows-7,nginx,php,Windows 7,Nginx,Php,我目前正在使用nginx和PHP-FastCGI,但这种安排受到限制,一次只能服务一个HTTP请求。(请参阅。)我通过执行以下操作从Windows命令提示符启动PHP: c:\Program Files\PHP>php-cgi -b 127.0.0.1:9000 不过,还有另一种运行PHP的方法,称为“快速CGI进程管理器”(PHP-FPM) 当在nginx后面的Windows 7上运行时,PHP-FPM可以同时处理多个HTTP请求吗?我最终得到了这个解决方案:您只需启动几个PHP cg
c:\Program Files\PHP>php-cgi -b 127.0.0.1:9000
不过,还有另一种运行PHP的方法,称为“快速CGI进程管理器”(PHP-FPM)
当在nginx后面的Windows 7上运行时,PHP-FPM可以同时处理多个HTTP请求吗?我最终得到了这个解决方案:您只需启动几个PHP cgi进程并将它们绑定到不同的端口,您需要更新nginx配置:
http {
upstream php_farm {
server 127.0.0.1:9000 weight=1;
server 127.0.0.1:9001 weight=1;
server 127.0.0.1:9002 weight=1;
server 127.0.0.1:9003 weight=1;
}
...
server {
...
fastcgi_pass php_farm;
}
}
为了方便起见,我创建了简单的批处理文件
启动沙箱.bat
:
@ECHO OFF
ECHO Starting sandbox...
RunHiddenConsole.exe php\php-cgi.exe -b 127.0.0.1:9000 -c php\php.ini
RunHiddenConsole.exe php\php-cgi.exe -b 127.0.0.1:9001 -c php\php.ini
RunHiddenConsole.exe php\php-cgi.exe -b 127.0.0.1:9002 -c php\php.ini
RunHiddenConsole.exe php\php-cgi.exe -b 127.0.0.1:9003 -c php\php.ini
RunHiddenConsole.exe mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console
cd nginx && START /B nginx.exe && cd ..
pstools\pskill php-cgi
pstools\pskill mysqld
pstools\pskill nginx
和停止沙箱.bat
:
@ECHO OFF
ECHO Starting sandbox...
RunHiddenConsole.exe php\php-cgi.exe -b 127.0.0.1:9000 -c php\php.ini
RunHiddenConsole.exe php\php-cgi.exe -b 127.0.0.1:9001 -c php\php.ini
RunHiddenConsole.exe php\php-cgi.exe -b 127.0.0.1:9002 -c php\php.ini
RunHiddenConsole.exe php\php-cgi.exe -b 127.0.0.1:9003 -c php\php.ini
RunHiddenConsole.exe mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console
cd nginx && START /B nginx.exe && cd ..
pstools\pskill php-cgi
pstools\pskill mysqld
pstools\pskill nginx
如您所见,有两种依赖关系:并且有一种替代方法,以更好的方式 在nginx配置中使用简单的快速CGI设置 nginx.conf
server {
....
location ~ \.php$ {
try_files $uri =404;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9001;
fastcgi_read_timeout 60;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
然后在start.bat文件中
set PATH=%cd%\bin\php;%PATH%
set PHP_FCGI_MAX_REQUESTS=0
set PHP_FCGI_CHILDREN=10
RunHiddenConsole.exe %cd%/php/php-cgi.exe -b 127.0.0.1:9001 -c %cd%/php/php.ini
PHP_FCGI_CHILDREN变量就是神奇发生的地方。PHP\u FCGI\u MAX\u请求也很重要。谢谢。在过去的两个小时里一直在挣扎,时间很好。只是想在某处创建一篇帖子,询问是否真的没有在Windows上动态创建PHP-FPM子进程的简单方法:)。效果很好!!!只有一个php cgi进程让我发疯了。我不知道这么简单。非常感谢。