laravel中的任务调度

2019-03-28  本文已影响0人  阳光的小mi

前言

laravel提供了command脚本,可以直接用artisan执行,也可以做定时任务。下面记录一下开发中常用的操作,基础知识请自行翻阅文档

1.介绍脚本

1.1创建脚本文件

artisan 提供了直接创建任务的命令,执行完成后,会看到脚本文件已经创建好了, 目录为:/app/Console/Commands/job_name.php。

#创建脚本
php artisan make:command job_name

1.2脚本内容结构介绍

创建好脚本后,可看到如下内容:

protected $signature = 'command:name';
protected $description = 'Command description';
public function __construct(){}
public function handle(){}

其中,$signature是执行脚本的命令,$description是对这个脚本的描述,脚本的逻辑在handle()方法中。

测试脚本内容

1.3 执行脚本

支持多种调度方式,可定时执行,laravel文档中有介绍,这里介绍一下直接用artisan命令调用。这里需要注意,不管是用哪种方式调用,都需要先将脚本添加到/app/Console/Kernel.php 中的 $commands数组中进行注册。


注册脚本

用artisan命令行执行脚本:

php artisan test:job_test (这里直接填脚本定义的$signature的值就好了)

2.脚本中常用的一些方法

2.1调用脚本时传递参数

直接在$signature中定义参数即可。具体操作如下:

    protected $signature = 'command:name {param_name}';

-- 调用

 $this->argument('param_name');
protected $signature = 'command:name {--option_name=}' #option_name默认为空;

-- 调用

 $this->option('option_name');
调用脚本并传递参数

2.2 在脚本中调用别的脚本

有时候我们想要在项目平稳上线后做一些数据统计工作,比如写一个统计日活脚本去统计每日活跃用户,每天凌晨执行统计昨日的日活跃,这样之后每天的日活跃我们都可以获取到。那,此功能开发之前的日活跃怎么办呢?好办,再写一个填充旧数据日活脚本,手动统计旧数据。在填充旧数据日活脚本中传递一个必填参数,指定开始时间,结束时间默认为昨天;再修改统计日活脚本,增加一个选项--option,可指定统计日期,默认昨天;在填充旧数据日活脚本中循环开始时间至结束时间,依次调用统计日活脚本,最后只需用artisan手动调用依次填充旧数据日活脚本即可完成填充旧数据的工作。

 Artisan::call('脚本执行命令',[脚本所需参数]);
上一篇 下一篇

猜你喜欢

热点阅读