惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
V2EX - 技术
V2EX - 技术
F
Full Disclosure
P
Privacy & Cybersecurity Law Blog
The GitHub Blog
The GitHub Blog
P
Palo Alto Networks Blog
T
Threat Research - Cisco Blogs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Latest news
Latest news
Y
Y Combinator Blog
P
Proofpoint News Feed
Cyberwarzone
Cyberwarzone
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tor Project blog
B
Blog RSS Feed
S
Schneier on Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
小众软件
小众软件
博客园 - Franky
T
The Exploit Database - CXSecurity.com
V
V2EX
V
Vulnerabilities – Threatpost
Know Your Adversary
Know Your Adversary
C
Check Point Blog
L
LINUX DO - 热门话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
S
Securelist
U
Unit 42
博客园 - 叶小钗
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 三生石上(FineUI控件)
C
Cyber Attacks, Cyber Crime and Cyber Security
G
GRAHAM CLULEY
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
G
Google Developers Blog
量子位
Hacker News - Newest:
Hacker News - Newest: "LLM"
NISL@THU
NISL@THU
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threatpost
N
News | PayPal Newsroom
L
LangChain Blog
宝玉的分享
宝玉的分享
C
CXSECURITY Database RSS Feed - CXSecurity.com
爱范儿
爱范儿

博客园 - coffee

apache配置http跳转https centos7使用yum安装mysql5.7 Jboot实现Redis操作事件通知 sun.misc.BASE64Encoder找不到jar包的解决方法 使用命令修改git的用户名和提交的邮箱 apache,请求来源特定域名,重定向到图片域名。 Shell_exec php with nohup git常用命令 Jenkins+Gitee异常解决 kafka安装和简单测试 statsvn使用小记 java.net.URLEncoder对中文的编码和解码 Apache配置WebSocket代理 php批量检查https证书有效期 504 Gateway Time-out ( Nginx + PHP ) 解决小计 VMware 扩展磁盘容量 查看mysql字符集、修改数据库、数据表、字段字符集 Docker常用命令 Docker 安装 MySQL 学习笔记
使用cron+php脚本监控后台任务脚本
coffee · 2019-12-26 · via 博客园 - coffee

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("\n", $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')."\n");
$date=date('YmdHis');
// 查找不在运行的任务并启动任务
for($i=0; $i<count($tasks); $i++){
    if(in_array($tasks[$i], $running)) {
        echo($tasks[$i]." is running\n");
    } else {
        echo($tasks[$i]." is dead\n");
        $cmd = "nohup /usr/bin/php /mytask/".$tasks[$i]." >/mytask/nohup/mytask.log 2>&1 &";
        $res = shell_exec($cmd);
    }
}
echo("\n");
?>