skymvc开发手册之定时任务
定时任务是指在某个时间执行某些任务,比如我们每天凌晨统计一下昨天的订单数,订单金额等。
我们在做定时任务需要使用其他工具,如linux的crontab,windows的计划任务等。
计划任务分为:定时器和任务处理两个模块
定时器我们推荐使用workerman/crontab。
任务处理按我们的需求具体设置。
create table sky_crontab( id int unsigned auto_increment, title varchar(32) not null default '' comment '名称', url varchar(225) not null default '' comment '任务地址', crontime varchar(64) not null default '' comment '执行时间', status tinyint UNSIGNED not null default 0 comment '状态', primary key(id) )engine=innodb default charset=utf8mb4 comment '定时任务';
安装crontab
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ composer require workerman/crontab
具体定时
<?php use Workerman\Worker; require __DIR__ . '../../vendor/autoload.php'; use Workerman\Crontab\Crontab; $worker = new Worker(); date_default_timezone_set('PRC'); $worker->onWorkerStart = function () { //定时任务接口 $host="http://deituicmsbase.skymvc.com/"; $res=file_get_contents($host."/index.php?m=crontab&a=api"); $list=json_decode($res,true); if(!empty($list)){ foreach($list as $k=>$v){ new Crontab($v["crontime"], function() use ($v){ $v["url"]=str_replace("&","&",$v["url"]); echo $v["url"]."\n"; echo file_get_contents($v["url"])."\n"; }); } } }; Worker::runAll();