使用cron+php脚本监控后台任务脚本
Posted coffee_cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用cron+php脚本监控后台任务脚本相关的知识,希望对你有一定的参考价值。
task1.php
<?php error_reporting(E_ERROR | E_WARNING | E_PARSE); // redis $redis = new Redis(); $redis->pconnect(REDIS_HOST, REDIS_PORT); $redis->auth(REDIS_PASS); // task while (true) { $task = $redis->rPop(‘mytask1‘); if ($task !== false) { // todo continue; } sleep(1); } ?>
task_monitor.php
<?php error_reporting(E_ERROR | E_WARNING | E_PARSE); // 任务数组 $tasks = array( ‘task1.php‘, ‘task2.php‘, ‘task3.php‘, ‘task4.php‘, ‘task5.php‘ ); // 查找正在运行的任务 $cmd = "ps -ef | grep ‘task‘"; $res = shell_exec($cmd); $all = explode(" ", $res); $running = array(); for($i=0; $i<count($all); $i++){ $array = explode("php ", $all[$i]); $p = trim($array[1]); if(!empty($p)) { $p = str_replace(‘/mytask/‘, ‘‘, $p); $running[] = $p; } } echo(date(‘Y-m-d H:i:s‘)." "); $date=date(‘YmdHis‘); // 查找不在运行的任务并启动任务 for($i=0; $i<count($tasks); $i++){ if(in_array($tasks[$i], $running)) { echo($tasks[$i]." is running "); } else { echo($tasks[$i]." is dead "); $cmd = "nohup /usr/bin/php /mytask/".$tasks[$i]." >/mytask/nohup/mytask.log 2>&1 &"; $res = shell_exec($cmd); } } echo(" "); ?>
以上是关于使用cron+php脚本监控后台任务脚本的主要内容,如果未能解决你的问题,请参考以下文章
[Shell] swoole_timer_tick 与 crontab 实现定时任务和监控
[Shell] swoole_timer_tick 与 crontab 组合实现定时任务和监控