当前我们使用 swoole 的时候,新建一个 ws.php 时,在命令行执行
php ws.php
启动成功后,这时,我们就需要对启动的这个服务进行监控,linux 下的监控命令是
netstat -anp 2>/dev/null | grep 9000 | grep LISTEN | wc -l
返回 1 表示服务正在运行,如果返回 0 表示你服务已停止。接下来我们新建一个 service.php 的文件,用于监听上面的 ws.php 的服务器是否正常运行,service.php内容如下
class Service {
const PORT = 8811;
public function port() {
$shell = "netstat -anp 2>/dev/null | grep ". self::PORT . " | grep LISTEN | wc -l";
$result = shell_exec($shell);
if($result != 1) {
// 发送报警服务 邮件 短信
/// todo
echo date("Ymd H:i:s")."error".PHP_EOL;
} else {
echo date("Ymd H:i:s")."succss".PHP_EOL;
}
}
}
// nohup
swoole_timer_tick(2000, function($timer_id) {
(new Service())->port();
echo "time-start".PHP_EOL;
});
然后启动这个 service.php 文件,这时输出在命令里,这不是我们想要的,linux 提供了一个命令,以后台运行
nohup /www/server/php/72/bin/php /www/wwwroot/swoole/Service .php > /www/wwwroot/swoole/log/log.txt &
注意:这里的 php 路径必须完整的安装路径,执行的 php 文件也必须是完整安装路径
执行了这条命令如果报错,如:
[root@localhost /]# nohup /www/server/php/72/bin/php /www/wwwroot/swoole/Service .php > /www/wwwroot/swoole/log/log.txt &
[1] 19803
[root@localhost /]# nohup: 忽略输入重定向错误到标准输出端
直接执行
php /www/wwwroot/swoole/Service .php > /www/wwwroot/swoole/log/log.txt &
然后使用命令检测这个文件是否已进程启动
ps aux|grep /www/wwwroot/swoole/Service .php
存在就 ok 了