Nginx 搭建 PHP 运行环境 在 Windows 环境下 php-cgi 不稳定经常自动关闭 xxfpm 一个小巧的 FastCGI 进程管理器
php-cgi 在 linux 中有 fpm 管理,Apache 不是采用 cgi 这种模式,于是乎就出现了,在 windows 下,采用 nginx 时,开启的 php-cgi 监听非常不稳定,经常奔溃关闭。
xxfpm 一个小巧的FastCGI进程管理器
xxfpm 可以很好的解决这个问题,对于用 php 的人,有了这个东西来维护一定数量的进程,就能制服经常崩溃退出的 php-cgi 。
Usage: xxfpm path [-n number] [-i ip] [-p port] Manage FastCGI processes. -n, –number number of processes to keep -i, –ip ip address to bind -p, –port port to bind, default is 8000 -u, –user start processes using specified linux user -g, –group start processes using specified linux group -r, –root change root direcotry for the processes -h, –help output usage information and exit -v, –version output version information and exit
使用示例
xxfpm z:/php5/php-cgi.exe -n 5 -p 8080
有人问,如何给程序加入参数?这个不难,使用双引号即可,路径要用”/”而不用”\”。例如要指定php.ini的路径,可以用下面例子:
xxfpm “z:/php5/php-cgi.exe -c z:/php5/php.ini” -n 5 -i 127.0.0.1 -p 8080
如何维护进程
Windows 上使用 CreateProcess 创建进程,使用 WaitForSingleObject 等待进程结束;Linux 上使用 fork 和 execl 创建进程,使用 waitpid 等待进程结束。Linux 的版本多了在创建子进程的时候可以设置进程限制,能够以受限用户方式来运行。
当进程管理器被关闭的时候,它所创建的所有子进程也必须被关闭。Windows 上使用 JobObject 这个东西来把子进程与管理器的进程产生关联,感谢 iceboy 提供的资料!Linux 上通过捕捉关闭信号,然后给所有子进程发送 SIGTERM 来结束子进程。详见源代码!
缺少 pthreadgc2.dll
下载后运行 xxfpm.exe,如果出现报错缺少 pthreadgc2.dll,将压缩包里面的 pthreadgc2.dll
文件,复制到 C:\Windows\System32
目录,然后命令行运行下面命令注册 dll:
regsvr32 pthreadgc2.dll
Nginx 配置实现
启动脚本
需要将下面的目录地址替换成你的路径
# start.bat SET php_home=E:\wnmp\php\ SET nginx_home=E:\wnmp\nginx\ echo Starting PHP FastCGI... RunHiddenConsole E:/wnmp/xxfpm/bin/xxfpm.exe "E:/wnmp/php/php-cgi.exe -c E:/wnmp/php/php.ini" -n 10 -i 127.0.0.1 -p 9000 echo Starting nginx... RunHiddenConsole %nginx_home%nginx.exe -p %nginx_home%
停止脚本
# stop.bat @echo off echo Stopping nginx... taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI... taskkill /F /IM xxfpm.exe > nul exit
相关链接
- GitHub 地址:https://github.com/78/xxfpm
- https://xiaoxia.org/2011/02/01/xxfpm-wrote-a-fastcgi-process-manager/
- xxfpm 本地下载:https://www.wenjiangs.com/wp-content/uploads/2020/09/xxfpm-master.zip
- RunHiddenConsole 下载:https://www.wenjiangs.com/wp-content/uploads/2020/09/RunHiddenConsole.zip
- Windows 下搭建 Nginx + fastcgi + PHP 运行时间长卡死 / 并发阻塞卡死问题 (此方法不可取)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论