有时,php守护进程会自己停掉。
保险起见,安装supervisord
当前系统:centos 6
yum install supervisor
启动命令:
service supervisord start
但是先不要启动。
先写一个php
假设该php文件是/var/www/html/public/temp/1.php
假设linux的php的cli命令文件是 /usr/local/php/bin/php
确保/etc/supervisord.conf文件最后
[include]
files = /etc/supervisord.d/*.ini
然后
vim /etc/supervisord.d/1.ini
(如果要监控不同的进程,多写几个ini即可,无需用组的方式,最简单)
解释看最下方的参考链接。
然后,
启动 supervisord,注意根据配置,会自动启动1.php
service supervisord start
然后,现在查看/tmp/11.log
会发现里面的内容不停增加,是php在输出。
以下是一些可以在shell中使用的监控命令
supervisorctl status 查看所有进程状况,最经常使用
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。
现在测试supervisor的自动重启功能。
ps aux|grep 1.php
然后
kill -9 进程号
继续ps aux|grep 1.php
发现又有了!
并通过不停增长的/tmp/11.log得到证实!
现在我想停止1.php了,方法
supervisorctl stop a1
现在我想启动1.php了,方法
supervisorctl start a1
真是太方便了!!
现在我要把phpresque的守护进程用其监控
(QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 php /var/www/worker3.php >> /tmp/1.log 2>&1 &)
添加/etc/supervisord.d/2.ini
然后
supervisorctl reload
======================
上面有误,补充,先在其余目录
建立shell脚本,例如名为w1.sh
然后
chmod a+x w1.sh
然后
在上面的/etc/supervisord.d/2.ini文件里的
command = /path/w1.sh
原因:command后面的命令不认识环境变量设置参数,通过绕个弯子执行脚本即可。
我亲测成功。
=====================
使用
参考:[url]http://www.jb51.net/LINUXjishu/400050.html[/url]
保险起见,安装supervisord
当前系统:centos 6
yum install supervisor
启动命令:
service supervisord start
但是先不要启动。
先写一个php
<?php
while(1) {
echo 1;echo "\n";
sleep(1);
}
假设该php文件是/var/www/html/public/temp/1.php
假设linux的php的cli命令文件是 /usr/local/php/bin/php
确保/etc/supervisord.conf文件最后
[include]
files = /etc/supervisord.d/*.ini
然后
vim /etc/supervisord.d/1.ini
(如果要监控不同的进程,多写几个ini即可,无需用组的方式,最简单)
[program:a1]
command = /usr/local/php/bin/php /var/www/html/public/temp/1.php
directory = /var/www/html/public/temp
user = root
stdout_logfile = /tmp/11.log
redirect_stderr = true
autostart = true
autorestart = true
解释看最下方的参考链接。
然后,
启动 supervisord,注意根据配置,会自动启动1.php
service supervisord start
然后,现在查看/tmp/11.log
会发现里面的内容不停增加,是php在输出。
以下是一些可以在shell中使用的监控命令
supervisorctl status 查看所有进程状况,最经常使用
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。
现在测试supervisor的自动重启功能。
ps aux|grep 1.php
然后
kill -9 进程号
继续ps aux|grep 1.php
发现又有了!
并通过不停增长的/tmp/11.log得到证实!
现在我想停止1.php了,方法
supervisorctl stop a1
现在我想启动1.php了,方法
supervisorctl start a1
真是太方便了!!
现在我要把phpresque的守护进程用其监控
(QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 php /var/www/worker3.php >> /tmp/1.log 2>&1 &)
添加/etc/supervisord.d/2.ini
[program:a2]
command = QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 /usr/local/php/bin/php /var/www/worker3.php
directory = /var/www
user = root
stdout_logfile = /tmp/a2.log
redirect_stderr = true
autostart = true
autorestart = true
然后
supervisorctl reload
======================
上面有误,补充,先在其余目录
建立shell脚本,例如名为w1.sh
#!/bin/bash
QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380 /usr/local/php/bin/php /var/www/worker3.php
然后
chmod a+x w1.sh
然后
在上面的/etc/supervisord.d/2.ini文件里的
command = /path/w1.sh
原因:command后面的命令不认识环境变量设置参数,通过绕个弯子执行脚本即可。
我亲测成功。
=====================
使用
参考:[url]http://www.jb51.net/LINUXjishu/400050.html[/url]