php服务监控(linux)

当前我们使用 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 了

你可能感兴趣的:(php服务监控(linux))