skymvc开发手册之定时任务
查看视频教程或者获取有关《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("&amp;","&",$v["url"]);
			    echo $v["url"]."\n"; 
			    echo file_get_contents($v["url"])."\n";
			});
		}
		
	}
    
};

Worker::runAll();