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 服务

相关内容

热门资讯

伊朗最高领袖称美国在中东将不再... △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)据伊朗方面5月26日消息,伊朗最高领袖穆杰塔巴·哈梅内伊当...
韩国首尔一高架桥拆除现场发生坍... 据韩联社报道,当地时间5月26日下午2时32分许,韩国首尔市内一座高架桥拆除现场发生坍塌事故,已造成...
中国反超,日本再降一位 【文/观察者网 阮佳琪】据彭博社26日报道,2025年日本对外净资产虽创下历史新高,但被中国反超,排...
家里就一个空调一开就跳闸是什么... 原因可能是供电异常引起的跳闸,这种情况需要检查同电源上的其他电器是否出现故障导致供电异常,排除到故障...
轩逸空调结冰怎么解决 轩逸空调结冰的原因有很多种,但主要是由于空调内部温度和湿度不协调所致。这种情况发生后,空调会发出噪音...
一开灯就砰的一声跳闸 一开灯就砰的一声跳闸,可能是以下原因导致的:1. 灯具短路:灯具内部线路或元件出现短路,导致电流瞬间...
honyar灯罩怎么取下来 要取下 Honyar 灯罩,通常可以按照以下步骤进行操作:1. 关闭电源:确保灯具处于关闭状态,以避...
冰箱圆形保护器如何用万用表测量... 冰箱圆形保护器如何用万用表测量好坏可以用过载保护器检测,正常温度过载保护器是接通状态,测量电阻阻值为...
原创 电... 中国 “逐日工程” 近期取得重大进展,突破空间太阳能电站与微波无线传能的多项关键技术,自主研制的一对...
原创 种... 你以为小红书只能种草。 小红书却想为你种“同事”。 24日,小红书科技薯发布公告称,小红书笔记已开...