nginx php-cgi 自动关闭,Nginx 搭建 PHP 运行环境 在 Windows 环境下 php-cgi 不稳定经常自动关闭 xxfpm 一个小巧的 FastCGI 进程管理器 - 文章教...

php-cgi 在 linux 中有 fpm 管理,Apache 不是采用 cgi 这种模式,于是乎就出现了,在 windows 下,采用 nginx 时,开启的 php-cgi 监听非常不稳定,经常奔溃关闭。

e9fe1a7a9be365a2e4ab2fe1958c79c2.png

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

相关链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值