前言
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('脚本执行命令',[脚本所需参数]);
网友评论