• windows下 解决PHP-CGI 进程崩溃502


    PHP是世界上最好的语言,但需要PHP解析器;Apache+php,需要通过mod_php.so和php相连;nginx+php 需要转发给 cgi程序

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

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

    Windows环境:默认会通过PHP-CGI 作为进程管理器,PHP自带的FastCGI管理器,

    缺点:

    1. php-cgi更改 php.ini 配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启
    2. 直接杀死php-cgi进程,php就不能运行了。(PHP-FPM和Spawn-FCGI就没有这个问题,守护进程会平滑从新生成新的子进程)
    3. 默认情况下,当 php-cgi 处理php 达到500次,就自动关闭,即不能解析PHP

    windows(64位)下,nginx使用php-cgi解析如何解决PHP-CGI 进程崩溃的问题:
    解决方法:采用xxfpm,管理FastCGI进程.

    下载地址: windows下解决PHP-CGI进程崩溃502的资源包-PHP文档类资源-CSDN下载

    1.首先安装 xxfpm.exe管理器

    在下载包里找到 pthreadGC2.dll文件,将这个文件复制到C:/Windows/SysWOW64目录(如果系统是32位的,将dll文件复制到C:WindowsSystem32下);

    在C:/Windows/SysWOW64目录,新建一个文件 registe.bat,和pthreadgc2.dll同目录

    1. @echo 开始注册
    2. copy pthreadgc2.dll %windir%SysWOW64
    3. regsvr32 %windir%SysWOW64pthreadgc2.dll /s
    4. @echo pthreadgc2.dll注册成功
    5. @pause

    运行registe.bat,便会完成pthreadgc2.dll注册(如果32位的系统,请将system32替换为system32)。完了就可以将registe.bat删了

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

    3.新建restart_nginx.bat

    1. @echo off
    2. REM Windows 下无效
    3. REM set PHP_FCGI_CHILDREN=5
    4. REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
    5. set PHP_FCGI_MAX_REQUESTS=1000
    6. echo Starting PHP FastCGI...
    7. 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
    8. echo Starting nginx...
    9. RunHiddenConsole C:/wnmp/nginx/nginx.exe -p C:/wnmp/nginx
    10. exit

    4.新建stop_nginx.bat

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

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

  • 相关阅读:
    Netty2
    基于BES平台音乐信号处理之DRC算法实现
    ahx文件转mav文件 工具分享及说明
    NoSQLBooster for MongoDB 7.1.X
    【Leetcode】拿捏链表(一)——206.反转链表、203.移除链表元素
    R-YOLOv7-tiny检测浸水玉米胚乳裂纹
    AcWing第 80 场周赛
    安装了 vue-cli,竟然提示 zsh: command not found: v
    【Linux】进程通信 | 信号
    设计模式之代理模式
  • 原文地址:https://blog.csdn.net/weixin_42272246/article/details/127092860