过去,你可能需要在服务器上为每一个调度任务去创建 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实现Redis单据锁以及防止并发重复写入 2022-10-12
- PHP命名空间简单用法示例 2022-12-01
- 在Laravel中实现使用AJAX动态刷新部分页面 2023-03-02
- laravel ORM关联关系中的 with和whereHas用法 2023-03-02
- PHP获取MySQL执行sql语句的查询时间方法 2022-11-09
- php array分组,PHP中array数组的分组排序 2022-08-01
- laravel 解决多库下的DB::transaction()事务失效问题 2023-03-08
- 使用PHP开发留言板功能 2023-03-13
- PHP中的错误及其处理机制 2023-06-04
- thinkphp3.2.3框架动态切换多数据库的方法分析 2023-03-19