【Laravel】Command 脚本任务实现

  1. 基本流程
  2. 具体实现
    1. 创建脚本文件
    2. 注册脚本
    3. 执行脚本
      1. 查看脚本命令调用方式
    4. 添加到定时任务
摘要

大多数项目在业务发展过程中,都需要修复历史数据和定时任务来完成一些业务逻辑,这部分通常都需要通过脚本来完成,一般的框架爱也都提供这部分的功能,学习并使用是工作中的基本要求。

基本流程

commands模式运行脚本定时任务基本流程:

  1. app/Console/Commands/ 目录下创建脚本任务文件
  2. app/Console/Kernel.php $commands数组中添加新建的脚本类
  3. app/Console/Kernel.php schedule()方法中添加脚本定时任务命令

具体实现

创建脚本文件

app/Console/Commands/QingShan/commandQingshan.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
namespace App\Console\Commands\QingShan;

use Illuminate\Console\Command;

class commandQingshan extends Command
{
// 自定义脚本命令签名
protected $signature = 'qingshan:commandQingshan';

// 自定义脚本命令描述
protected $description = '这里是脚本命令的描述qingshan';

// 创建一个新的命令实例
public function __construct()
{
parent::__construct();
}

//具体执行的业务内容
public function handle()
{
}
}

注册脚本

app/Console/Kernel.php $commands数组中追加新建的脚本类

1
2
3
4
protected $commands = [
'BasicIT\LumenVendorPublish\VendorPublishCommand',
Commands\QingShan\commandQingshan::class
]

执行脚本

查看脚本命令调用方式

  1. 在项目目录下执行下面的命令,查看当前可以执行的命令
1
> php artisan list

Available commands下会有一列:

1
2
qingshan
qingshan:commandQingshan 这里是脚本命令的描述qingshan
  1. 执行脚本命令
1
> php artisan qingshan:commandQingshan

添加到定时任务

app/Console/Kernel.php schedule()方法中添加脚本定时任务命令

1
2
3
4
5
6
// 设置commandQingshan脚本为每天15:00自动执行
protected function schedule(Schedule $schedule)
{
$schedule->command('qingshan:commandQingshan')->dailyAt('15:00');

}

参考资料:

Larave5.8中文文档–Artisan 命令行