咱们写一个监控WebSocket服务运行的脚本
class Monitoring
{
// WebSocket监听的端口
const PORT = 9510;
public function port()
{
// 查询 端口使用情况
// grep LISTEN 过滤处于侦听状态的进程
// wc -l 是统计文件行数
$shell = 'netstat -nap | grep '. self::PORT. ' | grep LISTEN | wc -l';
$res = shell_exec($shell);
if ($res < 1) {
// 发送短信 邮件
echo '失败了,需要发送通知哦'. PHP_EOL;
}
}
}
// 两秒执行一次脚本
Swoole\Timer::tick(2000, function($tiemr_id) {
(new Server())->port();
});
通过运行这段代码 ,咱们就可以间隔2秒执行一次对WebSocket服务的监控,但是我们在命令行中通过 php Monitoring.php 来让代码跑起来的时候,我们会发现,此时的命令行会 挂起执行 。
所以我们想要让它在运行命令的时候不要挂起,就可以通过 nohup 命令来实现:
nohup /绝对路径/php /绝对路径/Monitoring.php &
注:& 让命令在后台执行,终端退出后命令仍旧执行