欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

laravel 定时任务

程序员文章站 2022-05-19 19:19:22
...

前言


使用 Laravel 的定时任务可以便捷的实现Linux的Cron 

进入linux定时任务管理:(一般使用www跑定时任务,ROOT用户跑定时任务容易导致用户访问URL链接生成的日志没有权限的问题)

crontab -e -u www


新增一条记录

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1


新建定时任务

  •  新增CommandDemo1文件
php artisan make:command CommandDemo1


echo 内容到laravel.log文件:

   info('CommandDemo1 start');
   info('CommandDemo1 end');

laravel 定时任务

  • 新增CommandDemo2文件
php artisan make:command CommandDemo2


文件内容

info('CommandDemo2 start');
sleep(2);
info('CommandDemo2 end');
  • 新增CommandDemo3文件
php artisan make:command CommandDemo3


文件内容

在Kenel.php中新增调用

    $schedule->command('CommandDemo1')->everyMinute();
    $schedule->command('CommandDemo2')->everyMinute()->runInBackground();
    $schedule->command('CommandDemo3')->everyMinute();

laravel 定时任务

调用 Laravel定时任务后,输出顺序:

[2020-11-19 16:34:02] local.INFO: CommandDemo1 start
[2020-11-19 16:34:02] local.INFO: CommandDemo1 end
[2020-11-19 16:34:02] local.INFO: CommandDemo2 start
[2020-11-19 16:34:02] local.INFO: CommandDemo3 start
[2020-11-19 16:34:02] local.INFO: CommandDemo3 end
[2020-11-19 16:34:04] local.INFO: CommandDemo2 end

Laravel 任务调度默认是顺序阻塞执行 ,在执行耗时任务时,需要链式指定 runInBackground(),防止出现阻塞,导致其他任务出现意外。

 

常用方法

方法 描述
->cron('* * * * *'); 在自定义Cron调度上运行任务
->everyMinute(); 每分钟运行一次任务
->everyFiveMinutes(); 每五分钟运行一次任务
->everyTenMinutes(); 每十分钟运行一次任务
->everyFifteenMinutes(); 每十五分钟运行一次任务
->everyThirtyMinutes(); 每三十分钟运行一次任务
->hourly(); 每小时运行一次任务
->hourlyAt(17); 每小时第十七分钟运行一次任务
->daily(); 每天凌晨零点运行任务
->dailyAt('13:00'); 每天13:00运行任务
->twiceDaily(1, 13); 每天1:00 & 13:00运行任务
->weekly(); 每周运行一次任务
->monthly(); 每月运行一次任务
->monthlyOn(4, '15:00'); 每月4号15:00运行一次任务
->quarterly(); 每个季度运行一次
->yearly(); 每年运行一次
->timezone('America/New_York'); 设置时区

 

调度 Shell 命令

$schedule->exec('node /home/forge/script.js')->daily();

 

更新详细使用过程参考

laravel学院

相关标签: laravel