PHP实现的毫秒定时器,同时解决进程不重复堆积

定时器任务,在WEB应用比较常见,如何使用PHP实现定时器任务,大致有两种方案:
1)使用Crontab命令,写一个shell脚本,在脚本中调用PHP文件,然后定期执行该脚本;
2)配合使用ignore_user_abort()和set_time_limit(),使脚本脱离浏览器运行。前者是利用Linux的特性,和PHP本身没有多大关系,后者使用场景有限,且只能由一次HTTP请求触发该脚本,执行完后退出。那么我们如何使用纯PHP实现纯粹的定时器任务,且能适应认识任务业务需求?

基于cli模式运行,依赖php扩展 swoole

因该定时器支持毫秒,时间间隔较小,未来防止进程堆积,做了进程判断,进程存在就本次停止,等待下一次执行。

> /var/www/html/cctv/Runtime/Logs/huisu_si.log &";
            
            $ret = shell_exec("$start_master_cmd");
            // var_dump($ret);
            echo '开启进程:' . $start_master_cmd . "\n==============================\n";
        } else {
            echo "进程已存在~~休息一下~~(".$ret.")\n==============================\n";
        }
    });
} else {
    exit("非cli模式,已经停止执行!\n");
}

你可能感兴趣的:(php,crontab)