之前本地开发和环境一直用的集成环境,最近新项目 集成了php7+nginx
跑了一段时间发现偶尔 有php进程退出的情况 排查原因 nginx log: 1111 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream,..... 意思是上游 服务关闭 那就是php 的原因了
查看php log: 竟然没有错误!!!!!
百度 一下
原来 php-cgi 是PHP自带的FastCGI管理器
php-fpm 是unix/linux系统下的进程管理器
iis 自己实现了FastCGI进程管理
继续百度 找到这段话
默认情况下,当 php-cgi
处理php 达到500次,就自动关闭,即不能解析PHP
解除了疑惑,顺带还给个解决方案
就是自行安装FastCGI进程管理器
xxfpm
安装也很简单,下载下来
将pthreadgc2.dll 复制到C:/Windows/SysWOW64目录 如果系统是32位的,复制到C:\Windows\System32下
打开"开始-运行-输入regsvr32 pthreadgc2.dll
如果报错 新建一个bat文件 和pthreadgc2.dll
同目录 运行bat文件
@echo 开始注册
copy pthreadgc2.dll %windir%\SysWOW64\
regsvr32 %windir%\SysWOW64\pthreadgc2.dll /s
@echo pthreadgc2.dll注册成功
@pause
ps:我没做这一步 正常启动了
下载 RunHiddenConsole.exe(网上多得很搜一下就有) 编写 启动脚本 注意脚本路径根据实际路径写
start.bat
@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5
REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
RunHiddenConsole C:/wnmp/nginx/xxfpm/xxfpm.exe "C:/wnmp/php/php-cgi.exe -c C:/wnmp/php/php.ini" -n 5 -i 127.0.0.1 -p 9000
echo Starting nginx...
RunHiddenConsole C:/wnmp/nginx/nginx.exe -p C:/wnmp/nginx
exit
stop.bat
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM xxfpm.exe > nul
exit
运行 ok