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

一.定义调度

laravel添加定时任务_Laravel


调度频率设置

当然了,你可以给你的任务分配多种调度计划:

方法	描述
->cron('* * * * *');	自定义 Cron 时间表执行任务
->everyMinute();	每分钟执行一次任务
->everyFiveMinutes();	每五分钟执行一次任务
->everyTenMinutes();	每十分钟执行一次任务
->everyFifteenMinutes();	每十五分钟执行一次任务
->everyThirtyMinutes();	每三十分钟执行一次任务
->hourly();	每小时执行一次任务
->hourlyAt(17);	每小时第 17 分钟执行一次任务
->daily();	每天午夜执行一次任务(译者注:每天零点)
->dailyAt('13:00');	每天 13 点执行一次任务
->twiceDaily(1, 13);	每天 1 点 和 13 点分别执行一次任务
->weekly();	每周执行一次任务
->weeklyOn(1, '8:00');	每周一的 8 点执行一次任务
->monthly();	每月执行一次任务
->monthlyOn(4, '15:00');	每月 4 号的 15 点执行一次任务
->quarterly();	每季度执行一次任务
->yearly();	每年执行一次任务
->timezone('America/New_York');	设定时区

结合其他一些特定条件,我们可以生成在一周中特定时间运行的任务。举个例子,在每周一执行命令:

// 每周一 13:00 执行...
$schedule->call(function () {
    //
})->weekly()->mondays()->at('13:00');
 
// 工作日(周一至周五) 8点 至 17 点每小时执行一次...
$schedule->command('foo')
          ->weekdays()
          ->hourly()
          ->timezone('America/Chicago')
          ->between('8:00', '17:00');

额外的限制条件列表如下:

方法	描述
->weekdays();	限制任务在工作日执行
->weekends();	限制任务在周末执行
->sundays();	限制任务在周日执行
->mondays();	限制任务在周一执行
->tuesdays();	限制任务在周二执行
->wednesdays();	限制任务在周三执行
->thursdays();	限制任务在周四执行
->fridays();	限制任务在周五执行
->saturdays();	限制任务在周六执行
->between($start, $end);	限制任务在 $start 和 $end 之间执行
->when(Closure);	当闭包返回为真时执行
->environments($env);	限制任务在特定环境中执行

二.启动调度器
当使用这个调度器时,你只需要把下面的 Cron 入口添加到你的服务器中即可。如果你不知道怎么在服务器中添加 Cron 入口,可以考虑使用一些服务来管理 Cron 入口,比如 Laravel Forge:

执行crontab -e 在里面添加下面的cron入口
crontab -e 是以root身份执行定时任务
crontab -e -u www 是以www身份执行定时任务

  • /www/server/php/72/bin/php/ /www/wwwroot/zx/artisan schedule:run >> /dev/null 2>&1

(1) /www/server/php/72/bin/php/是PHP文件所在的位置

注:若不知道php文件在哪 可在linux下执行 find / -name php.ini

laravel添加定时任务_Laravel_02

(2) /www/wwwroot/zx/ 是项目根目录

(3)* * * * * 指这个 Cron 为每分钟执行一次 Laravel 的命令行调度器

(4)当 schedule:run 命令被执行的时候,Laravel 会根据你的调度执行预定的程序

感谢大佬分享