在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>
分别是哔哩哔哩序号35,小米运动序号2,米友社序号13,这个是同一个账号下运行的任务