过去,你可能需要在服务器上为每一个调度任务去创建 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 -e2.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-03-17
 - php实现构建排除当前元素的乘积数组方法 2022-11-23
 - php实现数组筛选奇数和偶数示例 2024-02-05
 - PHP手机短信验证码实现流程详解 2022-10-18
 - PHP实现抽奖系统的示例代码 2023-06-26
 - PHP实现文件下载【实例分享】 2024-04-27
 - PHP+MySQL+sphinx+scws实现全文检索功能详解 2023-01-31
 - PHP判断一个字符串是否是回文字符串的方法 2024-01-31
 - Yii框架连表查询操作示例 2023-02-13
 - php数组函数序列之array_sum() – 计算数组元素值之和 2024-01-15
 
    	
    	
    	
    	
    	
    	
    	
    	
						
						
						
						
						
				
				
				
				