Laravel任务调度的使用方法,laravel8任务调度案例

过去,你可能需要在服务器上为每一个调度任务去创建 Cron 条目。但是,这种方式很快会变得很痛苦,因为这些任务调度不在源代码中,并且你每次都需要通过 SSH 链接登录到服务器中才能增加 Cron 条目。Laravel 的命令

过去,你可能需要在服务器上为每一个调度任务去创建 Cron 条目。但是,这种方式很快会变得很痛苦,因为这些任务调度不在源代码中,并且你每次都需要通过 SSH 链接登录到服务器中才能增加 Cron 条目。

Laravel 的命令行调度器允许你在 Laravel 中清晰明了地定义命令调度。在使用这个任务调度器时,你只需要在你的服务器上创建单个 Cron 入口。你的任务调度在 app/Console/Kernel.php 的 schedule 方法中进行定义。

以下是一个案例,共大家参考和使用

环境:

PHP版本:7.4
laravel版本:8.4
服务器环境:lnmp

1、定义任务调度

你可以在 App\Console\Kernel 类的 schedule 方法中定义所有的调度任务。

在此例中,我们计划每一分钟执行一个 闭包。在 闭包 中,我们会执行一个数据库查询来清空一张表:

<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\DB;
class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
    ];


    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')->hourly();
          $schedule->call(function () {
          	
          	DB::select('truncate TABLE sys_admin_log');
        	})->everyMinute();
    }


    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');


        require base_path('routes/console.php');
    }
}

2、启动调度器

使用这个调度器时,只需要把下面的 Cron 条目添加到你的服务器中。

2.1、运行命令

crontab -e

2.2、添加定时脚本

* * * * * cd /home/wwwroot/www.example.com && /usr/local/php7.4/bin/php artisan schedule:run >> /dev/null 2>&1 >> /home/wwwlogs/schedule.log

这里每一分钟执行一次脚本,执行清空数据表,并重置ID指针

调度频率选项:你可以为你的任务分配多种调度计划:

方法 描述

->cron('* * * * *'); 自定义 Cron 计划执行任务

->everyMinute(); 每分钟执行一次任务

->everyTwoMinutes(); 每两分钟执行一次任务

->everyThreeMinutes(); 每三分钟执行一次任务

->everyFourMinutes(); 每四分钟执行一次任务

->everyFiveMinutes(); 每五分钟执行一次任务

->everyTenMinutes(); 每十分钟执行一次任务

->everyFifteenMinutes(); 每十五分钟执行一次任务

->everyThirtyMinutes(); 每三十分钟执行一次任务

->hourly(); 每小时执行一次任务

->hourlyAt(17); 每小时第 17 分钟执行一次任务

->everyTwoHours(); 每两小时执行一次任务

->everyThreeHours(); 每三小时执行一次任务

->everyFourHours(); 每四小时执行一次任务

->everySixHours(); 每六小时执行一次任务

->daily(); 每天 0 点执行一次任务

->dailyAt('13:00'); 每天 13:00 执行一次任务

->twiceDaily(1, 13); 每天 01:00 和 13:00 各执行一次任务

->weekly(); 每周日 00:00 执行一次任务

->weeklyOn(1, '8:00'); 每周一的 08:00 执行一次任务

->monthly(); 每月第一天 00:00 执行一次任务

->monthlyOn(4, '15:00'); 每月 4 号的 15:00 执行一次任务

->lastDayOfMonth('15:00'); 每月最后一天 15:00 执行一次任务

->quarterly(); 每季度第一天 00:00 执行一次任务

->yearly(); 每年第一天 00:00 执行一次任务

->timezone('America/New_York'); 设置时区

本文标题为:Laravel任务调度的使用方法,laravel8任务调度案例

基础教程推荐