laravel 任务调度器

背景:
在实际工作业务中,经常要用到异步任务的方式来进行相关(耗时)任务的处理,这时可能需要采取定时任务的方式来进行。linux自带的crontab定时器工具能很好的解决这个问题。
每次项目上线的时候,如有新的异步任务脚本就必定要×××器管理员进行crontab配置修改。因为需要动服务器配置,沟通协调确认的过程都避免不了。
laravel自带的schedule任务调度能很好解决这个痛点。

laravel任务调度

php artisan schedule:run

实现步骤

1、crontab -e 增加定时执行laravel任务调度

#每分钟执行一次laravel任务调度,注意项目的绝对路径必须写正确。
* * * * * * php /site-path/artisan schedule:run >> /dev/null 2>&1 

手动运行调度测试:

php artisan schedule:run 

2、增加artisan Command命令行脚本文件

不做具体介绍,请参照官方文档

3、在Console内核中注册新建的命令行脚本文件信息

console内核文件/app/Console/Kernel.php
protected $commands = [
        "App\\Console\\Commands\\MigrateCompanyDataCommand",//迁移代记账公司数据到对象表
        "App\\Console\\Commands\\ReportCustomerSettleAccountEventCommand",//上报帐套结帐事件
        "App\\Console\\Commands\\IndicatorComputeCommand",//指标计算

    ];

4、配置调度信息

在调度配置中增加相关command任务的执行频率即可完成定时任务部署。

protected function schedule(Schedule $schedule)
    {
         $schedule->command(‘command任务文件signature‘)->hourly();
    }

5、关于执行频率

参照:Illuminate\Console\Scheduling\ManagesFrequencies

调度常用选项
  • ->cron(‘ *‘);在自定义Cron调度上运行任务
  • ->everyMinute();每分钟运行一次任务
  • ->everyFiveMinutes();每五分钟运行一次任务
  • ->everyTenMinutes();每十分钟运行一次任务
  • ->everyThirtyMinutes();每三十分钟运行一次任务
  • ->hourly();每小时运行一次任务
  • ->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‘);设置时区
  • ->weekdays();只在工作日运行任务
  • ->sundays();每个星期天运行任务
  • ->mondays();每个星期一运行任务
  • ->tuesdays();每个星期二运行任务
  • ->wednesdays();每个星期三运行任务
  • ->thursdays();每个星期四运行任务
  • ->fridays();每个星期五运行任务
  • ->saturdays();每个星期六运行任务
  • ->between($start, $end);基于特定时间段运行任务
  • ->when(Closure);基于特定测试运行任务

原文地址:https://blog.51cto.com/phpme/2400997

时间: 2024-11-04 13:50:37

laravel 任务调度器的相关文章

《CLR via C#》之线程处理——任务调度器

<CLR via C#>之线程基础--任务调度器 <CLR via C#>之线程基础--任务调度器线程池任务调度器设置线程池限制如何管理工作者线程同步上下文任务调度器自定义TaskScheduler派生类 FCL提供了两个派生子TaskScheduler的类型:线程池任务调度器(thread pool task scheduler),和同步上下文任务调度器(synchronization context task scheduler).默认情况下都使用线程池任务调度器. 线程池任务

TaskScheduler一个.NET版任务调度器

TaskScheduler是一个.net版的任务调度器.概念少,简单易用. 支持SimpleTrigger触发器,指定固定时间间隔和执行次数: 支持CronTrigger触发器,用强大的Cron表达式满足日历形式的复杂触发规则: 支持动态添加和删除任务,可根据具体需求实现复杂逻辑: static void Main(string[] args) { Scheduler scheduler = new Scheduler(); SimpleTrigger simpleTrigger = new S

基于 Laravel 开发博客应用系列 —— Homestead 和 Laravel 安装器

1.Homestead 从主机操作系统的控制台中(Windows 中被称作命令提示符,Linux 中被称作终端),你可以轻松通过不带参数的homestead 命令查看所有有效的 Homestead 命令: 日常最经常使用的命令恐怕非启动 Homestead 虚拟机的 homestead up 莫属了. 2.常用 Homestead 命令概览 下面是常用的 Homestead 命令说明: homestead up:该命令用于启动 Homestead 虚拟机,如果加上 --provision 选项那

laravel 任务调度(定时执行任务)

laravel 任务调度(定时执行任务) 任务调度写在  app/Console/Kernel.PHP 文件 schedule 中,里面默认有一个例子.在 schedule 方法里放入自己的执行的代码.比如 这个是每一分钟在数据库里插入一条数据. [html] <?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as Co

SST-超级简单任务调度器结构分析

SST(Super Simple Task) 是一个基于任务优先级.抢占式.事件驱动.RTC.单堆栈的超级简单任务调度器,它基于Rober Ward一篇论文的思想,Miro Samek用C重新编程实现的,它是QP中QK的的基本思想. QK加上状态机事件处理的方法QEP,再加上任务的注册与事件的保存与分发功能QF,再加上串口调试功能QSpy,再加上基于模型驱动的开发QM,就成了QP. 2015年,QP获得“嵌入式计算设计”顶级发明奖[1]. 1.SST层次结构 ? 2.SST总体结构 ? 发送事件

温故知新 任务调度器(定时器)

1,导入Quartz的依赖包 2,任务调度主要是三个关键点:调度器    任务    触发器 Schedule  Job   Strigger //创建任务类 1,实现Job接口 2,任务的自定义执行方法(重写) //创建调度器 ScheduleFactory scheduleFactory =new StdScheduleFactory(); Schedule schedule=scheduleFactory.getSchedule(); //创建任务 JobDetail jobDetail=

任务调度器quartz的使用

1.quartz的获取. 可參照:Quartz任务调度模型实例 2.开发思路: 要使用定时器quartz.先弄清楚三个概念:调度器.任务.触发器.开发也是依照这三个方面来开发, 1>写一个Job的实现类.里面是你自己要完毕的业务逻辑: 2>写Trigger的实现类,主要有SimpleTrigger和CronTrigger这两个子类.来决定调度方案: 当仅需触发一次或者以固定时间间隔周期运行,SimpleTrigger是最适合的选择: 而CronTrigger则能够通过Cron表达式定义出各种复

Quartz任务调度器

背景:              近期项目中遇到跨区调拨商品的需求,比如A区和B区,需要判断A区或者B区某种sku是否需要从对方库调拨商品来补充货源,避免因缺失商品而出现订单延误,影响销售和对用户产生不良影响. 问题:             数据量庞大,如果当查看的时候去获取数据,那么会严重影响系统的性能,甚至导致数据库和应用服务器无法响应. 解决方案:            规定在某个时间点,最好是在晚上12点时系统自动获取需要调拨的数据,然后将数据存储到数据库中.晚上12点,用户访问量和系

SpringQuartz定时任务调度器

JAVA代码测试类 public class TestQuartz { public void test(){ System.out.println("*********************Quartz的任务调度*********************"); } } Quartz配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www