laravel总结——任务调度
admin
2023-06-13 21:22:44
0次

laravel 的任务调度,默认在 App\Console\Kernel 类 的schedule 中

三种调度 计划方式:

  1. 闭包形式 : call
    protected function schedule(Schedule $schedule){
    $schedule->call(function () {
    //自定义逻辑处理
    })->daily(); //调度频率
    }
  2. artisan 命令 或者 系统命令 :
    $schedule->command('emails:send --force')->daily();
  3. command 类 :command
    $schedule->command(Command::class, ['--force'])->daily();
    command 类 需要在 App\Console\Kernel 中注册
    protected $commands = [
    \App\Console\Commands\Inspire::class,
    ];

$schedule->exec('node /home/forge/script.js')->daily(); //可以将命令发送到系统

调度频率设置

->cron('* * * * *')     自定义调度任务
->everyMinute();     每分钟执行一次任务
->everyFiveMinutes();   每五分钟执行一次任务
->everyTenMinutes();    每十分钟执行一次任务
->everyThirtyMinutes();     每半小时执行一次任务
->hourly();     每小时执行一次任务
->hourlyAt(17);     每一个小时的第 17 分钟运行一次
->daily();  每到午夜执行一次任务
->dailyAt('13:00');     每天的 13:00 执行一次任务
->twiceDaily(1, 13);    每天的 1:00 和 13:00 分别执行一次任务
->weekly();     每周执行一次任务
->monthly();    每月执行一次任务
->monthlyOn(4, '15:00');    在每个月的第四天的 15:00 执行一次任务
->quarterly();  每季度执行一次任务
->yearly();     每年执行一次任务
->timezone('America/New_York');     设置时区

额外限制条件

->weekdays();   限制任务在工作日
->sundays();    限制任务在星期日
->mondays();    限制任务在星期一
->tuesdays();   限制任务在星期二
->wednesdays();     限制任务在星期三
->thursdays();  限制任务在星期四
->fridays();    限制任务在星期五
->saturdays();  限制任务在星期六
->between($start, $end);    限制任务运行在开始到结束时间范围内
->unlessBetween($start,$end)
->when(Closure);    限制任务基于一个为真的验证,传递一个闭包,返回真会继续执行
->skip(Closoure);  返回真,停止执行

避免重复任务

->withoutOverlapping();

强制维护模式下也运行

->evenInMaintenanceMode();
 ->sendOutputTo($filePath);   //输出任务到文件
 ->appendOutputTo($filePath);  //添加到文件
发送到邮件
$schedule->command('foo')
         ->daily()
         ->sendOutputTo($filePath)   //必须要这个
         ->emailOutputTo('foo@example.com');  

任务钩子

->before(Clousoure function(){   });
->after(Clousoure function(){   });

ping

->pingBefore($url);
->thenPing($url);
需要扩展包支持
composer require guzzlehttp/guzzle

一次性启动任务: 常用于测试

php artisan schedule:run   //运行所有任务

定时调度

crontab -e
    * * * * * php  programPath/artisan schedule:run  >> /dev/null 2>&1

总结:可在 command 类的 handle 方法中调用service 服务

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...