CrontabWorker
此工具是一个php定时任务管理工具,支持大量PHP定时脚本,采用预派生进程模型,父进程负责计算定时任务间隔逻辑向消息队列写入任务,子进程负责处理消息队列任务,当处理任务进程数不够会自动扩容,保证定时任务的正确性
概述
曾几何时,我使用linux下crontab工具来做定时任务,起初还好,当我往crontab加越来越多的任务时,我开始怕了,那么一大坨类似**** php /path/xx.php
的东西一点都不亲切,即使加上每个加上注释我都还是觉得可怕,于是乎就琢磨出用php整一个定时任务管理用具,要求不高,就是要用起来,运行起来管理起来感觉很酷。
环境要求
liunx pcntl扩展开启 php 5.3以上 composer安装
composer require godv/crontab-worker
如何使用
核心方法 CrontabWorker::addInterval($name, $command, $callable, $args)
参数1 $name 定时任务名称
参数2 $command 运行指令以key@value的形式表示
s@n
表示每n秒运行一次
i@n
表示每n分钟运行一次
h@n
表示每n小时运行一次
at@nn:nn
表示指定每天的nn:nn执行 例如每天凌晨 at@00:00
参数3 $callable 回调函数,也就是定时任务业务逻辑
参数4 $args 回调函数传递的参数
代码示例
记得先运行
composer install
哦!
test1.php
use CrontabWorkerCrontabWorker; $crontabWorker = new CrontabWorker(); $crontabWorker->output = "./test.log"; //开启5个进程预备运行任务 $crontabWorker->proccessNum = 5; //指定每秒运行一次 $crontabWorker->addInterval('任务1', 's@1', function(){ echo 111,"n"; }); //指定每秒运行一次 $crontabWorker->addInterval('任务2', 's@2', function(){ echo 222,"n"; }); // 指定每分钟运行一次 $crontabWorker->addInterval('任务3', 'i@1', function(){ echo 333,"n"; }); // 指定每小时运行一次 $crontabWorker->addInterval('任务4', 'h@1', function(){ echo 444,"n"; }); // 指定每天的时间点运行 $crontabWorker->addInterval('任务5', 'at@00:00', function(){ echo 555,"n"; }); $crontabWorker->run();
如何查看使用说明
php test1.php -h
输入上面的命令会出现命令提示
用法:
php tests/test1.php start 启动
php tests/test1.php -d start 守护进程化启动
php tests/test1.php -d restart 守护进程化重启
php tests/test1.php stop 停止任务
php tests/test1.php status 查看任务运行状态
如何运行
-d
表示已守护进程方式运行
php test1.php -d start
如何停止
php test1.php stop
如何重启
php test1.php restart
如何查看服务状态
觉得这控制台输出不够酷,不够好请评论留言,谢谢!
php test1.php status
======================================================================
PPID: 19272
RUN_TIME: 2017-11-18 19:06
PROCCESS_TITLE: php-crontab
PROCCESS: 5
======================================================================
NAME COMMAND COUNT LAST_TIME NEXT_TIME
任务1 s@1 4 11-18 19:06:34 11-18 19:06:35
任务2 s@2 2 11-18 19:06:34 11-18 19:06:36
任务3 i@1 0 none 11-18 19:07:30
任务4 h@1 0 none 11-18 20:06:30
任务5 at@00:00 0 none 11-19 00:00:00
======================================================================
ps -ef |grep php-crontab
root 19294 1 0 19:07 ? 00:00:00 php-crontab-master
root 19295 19294 0 19:07 ? 00:00:00 php-crontab-child
root 19296 19294 0 19:07 ? 00:00:00 php-crontab-child
root 19297 19294 0 19:07 ? 00:00:00 php-crontab-child
root 19298 19294 0 19:07 ? 00:00:00 php-crontab-child
root 19299 19294 0 19:07 ? 00:00:00 php-crontab-child
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。