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();