windows+nginx+php环境下php-cgi自动退出的问题

在windows下搭建nginx+php环境时,php-cgi.exe会经常性的自动关闭退出,经常莫名其妙的就502了,去服务器一看,php服务已经停止运行


由于windows没有linux的守护进程那种东西,因此之前php服务用的是winsw实现开机自启加后台运行,不然直接执行php-cgi.exe -b 127.0.0.1:9000 -c php.ini会有黑框框,很难受。
然而winsw似乎并不支持守护运行,即进程退出后无法重启,服务中设置重启也没用。

然后就在网上找了个windows下的php-cgi进程管理器,该进程管理器需要用到pthreadGC2.dll。经测试win64平台可以用

下载地址:http://down.chinaz.com/soft/31157.htm

下载完解压,将bin中的文件复制到php安装目录
新建一个start.bat用来启动守护进程,在中间写入后运行就可以启动守护进程了:

xxfpm "php-cgi.exe -c php.ini" -n 5 -i 127.0.0.1 -p 9000

xxfpm的操作参数如下:

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

如果要去掉恼人的黑框框,可以将bat丢到winsw中运行,并且实现开机自启

winsw.xml

<service>
    <id>php-cgi</id>
    <name>php-cgi</name>
    <description>php服务端</description>
    <executable>start.bat</executable>
    <arguments></arguments>
    <logmode>reset</logmode>
</service>

参考链接:https://www.cnblogs.com/fogwang/p/5507594.html

评论区
头像