过去,你可能需要在服务器上为每一个调度任务去创建 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任务调度案例


基础教程推荐
- php生成短网址/短链接原理和用法实例分析 2023-04-20
- PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br 2024-03-28
- php+mysql开发的最简单在线题库(在线做题系统)完整案例 2023-01-04
- PHP laravel使用自定义邮件类实现发送邮件 2023-07-03
- Laravel 解决composer相关操作提示php相关异常的问题 2023-03-08
- php去除deprecated的实例方法 2022-09-02
- php如何获取当前日期和星期 2024-12-06
- PHP采用get获取url汉字出现乱码的解决方法 2024-03-28
- PHP基于反射机制实现自动依赖注入的方法详解 2022-10-02
- Laravel修改验证提示信息为中文的示例 2023-03-08