欢迎来到手把手复制执行环节
步骤目录
-
- 第一步生成调用文件
- 第二步定义调度
- 第三步启动调度器
第一步生成调用文件
执行以下命令
php artisan make:command 你的命名
该命令会在 app/Console/Commands 目录下创建 你命名的文件
下面是我对该文件的理解
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\User;
use Illuminate\Support\Facades\Log;
class Test Command
{
//此处代表名称,调用时使用
protected $signature = 'command:Test';
//对定时任务的描述
protected $description = '这是一个测试';
public function __construct()
{
parent::__construct();
}
public function handle()
{
//我们可以在这里做我们需要的操作
$user = User::find(1);
$user->update(['name'=>'成功修改']);
Log::info('定时任务执行');
}
}
第二步定义调度
文件修改好以后我们需要在App\Console\Kernel== 类的 schedule 方法中定义所有调度任务
<?php
namespace App\Console;
use DB;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
protected $commands = [
//这里写上你生成的文件路径
\App\Console\Commands\Test::class,
];
protected function schedule(Schedule $schedule)
{
//该处执行调度
$schedule->command('command:Test')->monthly();
}
}
以下为调度频率设置函数
->cron('* * * * *'); 在自定义Cron调度上运行任务
->everyMinute(); 每分钟运行一次任务
->everyFiveMinutes(); 每五分钟运行一次任务
->everyTenMinutes(); 每十分钟运行一次任务
->everyThirtyMinutes(); 每三十分钟运行一次任务
->hourly(); 每小时运行一次任务
->daily(); 每天凌晨零点运行任务
->dailyAt('13:00'); 每天13:00运行任务
->twiceDaily(1, 13); 每天1:00 & 13:00运行任务
->weekly(); 每周运行一次任务
->monthly(); 每月运行一次任务
->monthlyOn(4, '15:00'); 每月4号15:00运行一次任务
->quarterly(); 每个季度运行一次
->yearly(); 每年运行一次
->timezone('America/New_York'); 设置时区
第三步启动调度器
只需将以下 Cron 项目添加到服务器
* * * * * /你php的绝对路径 /你项目的根目录绝对路径/artisan schedule:run >> /dev/null 2>&1
操作如下
命令行输入crontab -e
输入i可以进入编辑状态,可输入任务代码。
在最后面添加
* * * * * /你php的绝对路径 /你项目的根目录绝对路径/artisan schedule:run >> /dev/null 2>&1
例如
* * * * * /www/server/php/74/bin/php /www/wwwroot/test/artisan schedule:run >> /dev/null 2>&1
回车换行以后
先按Esc键,然后输入:wq 保存文件
然后执行命令
php artisan schedule:run
定时任务调度即可顺利执行