• 欢迎访问我的博客

【转】解决windows下php-cgi进程经常自动关闭

nginx iJiaxin 1年前 (2017-07-19) 542次浏览 0个评论 扫描二维码

php-cgi 在 linux 中有 fpm 管理,Apache 不是采用 cgi 这种模式,于是乎就出现了,在 windows 下,采用 nginx 时,开启的 php-cgi 监听非常不稳定,经常奔溃关闭。现在解决了这个问题。注意是 win32 位系统下解决的,虽然服务器上 64 位系统也跑起来了,但是环境装的都是 32 位的。

采用了这个叫 xxfpm 的 FastCGI 进程管理器:xxfpm
下载后运行 xxfpm.exe,如果出现报错缺少 pthreadgc2.dll,需要下载 pthreads-win32:http://sourceware.org/pthreads-win32/

将这个文件复制到 C:/Windows/System32 下(如果系统是 64 位的请将 32 位的 dll 文件复制到 C:\Windows\SysWOW64 目录);
然后打开”开始-运行-输入 regsvr32 pthreadgc2.dll”,回车,如果报错,用下面的方法。新建一个文件“注册.bat“,内容:
@echo 开始注册
copy pthreadgc2.dll %windir%\system32\
regsvr32 %windir%\system32\pthreadgc2.dll /s
@echo pthreadgc2.dll 注册成功
@pause
双击注册.bat,就会自动完成 pthreadgc2.dll 注册(如果 64 位的系统安装 32 位的 dll 文件,请将 system32 替换为 SysWOW64)。完了就可以将这个文件删了。
接下里将下载下来的 xxfpm 目录 copy 到 nginx 下:

为了方便修改一下当初安装 nginx 时的 RunHiddenConsole 启动关闭文件(如果你是这样安装的话):
修改 start_nginx.bat 为:
@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5
REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI…
RunHiddenConsole D:/wnmp/nginx-1.10.2/xxfpm/bin/xxfpm.exe “D:/wnmp/php-5.6/php-cgi.exe -c D:/wnmp/php-5.6/php.ini” -n 5 -i 127.0.0.1 -p 9000
echo Starting nginx…
RunHiddenConsole D:/wnmp/nginx-1.10.2/nginx.exe -p D:/wnmp/nginx-1.10.2
exit
修改 stop_nginx.bat 为:
@echo off
echo Stopping nginx…
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI…
taskkill /F /IM xxfpm.exe > nul
exit
现在在开启 nginx 时,我们就同时开启了 5 个 php-cgi 进程,因为我们传了参数 -n 为 5。

如果我们手动断掉一个,会发现又多出来一个,还是 5 个。xxfpm 将会管理 php-cgi,将其维持在 5 个 php-cgi 进程,防止 cgi 进程崩溃关闭。还有一点注意,监听端口注意与 nginx 的配置文件对齐。
来源:https://www.gzpblog.com/20170209/619.html

iJiaxin 个人博客 , 版权所有丨如未注明 , 均为原创丨转载请注明原文链接:【转】解决 windows 下 php-cgi 进程经常自动关闭
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
152 queries in 0.431 seconds, using 10.78MB memory