PHP监控进程状态,完成掉线自动重启

China☆狼群 提交于 2020-07-28 11:29:26


1. 利用Shell脚本实现

#!/bin/bash

PORT=0

while [ true ];do
    read -p "please enter the port that you want to minitor:" port
    if [ $port -gt 65536 ] ||  [ $port -lt 1 ];then
        echo 'the port you enter is not correctly'
    else
        PORT=$port
        break
    fi
done

while [ true ]; do
    if [ `netstat -anp 2> /dev/null | grep ${PORT} | wc -l` -gt 0 ] ;then
        echo 'service is online'
    else
        echo 'service is offline'
        cd /home/eko/share/live_admin/script
        php ./ws.php &
    fi
    sleep 3
done

2. 利用Swoole定时器实现

class Server {
    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 Server())->port();
    echo "time-start".PHP_EOL;
});

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!