• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

windows下解决PHP-CGI进程崩溃

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

PHP是世界上最好的语言,但需要PHP解析器
Apache下通过mod_php.so和php相连,
如果使用nginx,碰到php 需要转发给 cgi程序

关于FastCGI
全称 FastCGI Process Manager,是一种进程管理器,管理 cgi,市面上有很多进程管理器,PHP-FPM就是其中一种。

PHP-FPM作为进程管理器,会监听端口,默认为9000,并且监听本机,只接收127.0.0.1
linux下通过 netstat -nlpt|grep php-fpm 查看

PHP-CGI 是PHP自带的FastCGI管理器,缺点:

  1. php-cgi更改 php.ini 配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启
  2. 直接杀死php-cgi进程,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程)

本篇只讲windows(64位)下,采用nginx,使用php-cgi解析
默认情况下,当 php-cgi 处理php 达到500次,就自动关闭,即不能解析PHP(这你妹也太坑了吧!都PHP7了,这个问题 还存在)

采用xxfpm,管理FastCGI进程.下载地址:https://github.com/78/xxfpm,在此非常感谢这位大哥

 
 

 

安装xxfpm管理器

  1. 首先安装 xxfpm.exe

  2. 如果出现报错缺少pthreadgc2.dll,请看下面几步
    1. 下载里找到 pthreadGC2.dll
    2.

     
     

    3. 将这个文件复制到C:/Windows/SysWOW64目录(如果系统是32位的,将dll文件复制到C:\Windows\System32下);
    4. 然后打开"开始-运行-输入regsvr32 pthreadgc2.dll,回车,如果报错,用下面的方法。
    5. 新建一个文件 registe.bat,和pthreadgc2.dll同目录

     

     @echo 开始注册
     copy pthreadgc2.dll %windir%\SysWOW64\
     regsvr32 %windir%\SysWOW64\pthreadgc2.dll /s
     @echo pthreadgc2.dll注册成功
     @pause
    

    6.运行registe.bat,便会完成pthreadgc2.dll注册(如果32位的系统,请将system32替换为system32)。完了就可以将这个文件删了(不是删除windows目录下哈)

  3. 将下载的xxfpm.exe copy 到nginx目录下,

     
     

     

4.需要下载 RunHiddenConsole.exe,地址 链接:https://pan.baidu.com/s/1o94QWdW 密码:rcbj

 
 

 

5.新建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 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

6.新建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

7.现在运行 start_nginx.bat,等于同时开启5个php-cgi进程,因为我们传了参数 -n 为5

8.如果我们手动断掉一个,会发现又多出来一个,还是5个。
这是因为xxfpm会管理php-cgi,将其维持在5个php-cgi进程,防止cgi进程崩溃关闭。
还有一点注意,监听端口注意与nginx的配置文件相同。

 



 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php中ajax跨域请求---小记发布时间:2022-07-10
下一篇:
php加入环境变量发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap