laravel框架自带定时任务

1首先我们先创建一个Test.php测试任务

php artisan make:command Test

2.创建完成后会在app/Console/Commands/目录下,如图

3.打开Test.php

<?php

namespace AppConsoleCommands;

use IlluminateConsoleCommand;
use IlluminateSupportFacadesLog;

class Test extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = test;//命令名称,待会调用php artisan test就会执行

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 这是一条测试任务;//命令描述没啥用

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        //主要业务逻辑在这里
        Log::info(测试任务);

    }
}

4.在Kernel.php中完成注册。然后要注册这个任务。

5.注册完成后。我们就可以调用这里的任务了。

6.可以在日志文件中看到,说明我们已经成功调用了这个测试任务。

7.然后,我们这里着重说一下定时任务的调度。在kernel.php中还有一个schedule函数,这个就是用来做定时调度的。

详细说下laravel里面所有的定时函数,让你用的如鱼得水~~~~ ->cron($expression) emmm.....这个函数好像从来都没用到过,看英文介绍是“表达频率的cron表达式”,等我有时间在研究一下这个函数。 ->between($startTime, $endTime) 任务在startTime和endTime时间段之内被调用,example:->between(8:00,9:00)表示8:00到9:00之间调用任务 ->unlessbetween($startTime, $endTime) 任务在startTime和endTime时间段之内不被调用,example:->between(8:00,9:00)表示8:00到9:00之间不调用任务 ->inTimeInterval($startTime, $endTime) 同between($startTime, $endTime),因为between()最终还是去调用了inTimeInterval()这个函数 ->everyMinute() 最简单的一个函数,每分钟调用一次 ->everyFiveMinutes() 每5分钟调用一次 ->everyTenMinutes() 每10分钟调用一次 ->everyFifteenMinutes() 每15分钟调用一次 ->everyThirtyMinutes() 每30分钟调用一次 ->hourly() 每小时调用一次,准点调用 ->hourlyAt($offset) 每小时调用一次,example: ->hourly(30) 1:30,2:30,3:30...调用一次 ->daily() 每天0:00调用一次 ->dailyAt($time) example: ->daily(9:00)每天9点调用一次 ->at($time) 在给定的时间调用函数 ->twiceDaily($first = 1, $second = 13) 每天调用两次,默认0点和12点调用 ->weekdays() 工作日调用 ->weekends() 周末调用 ->mondays() 周一调用 ->tuesdays() 周二调用 ->wednesdays() 周三掉用 ->thursdays() 周四调用 ->firdays() 周五调用 ->saturdays() 周六调用 ->sundays() 周日调用 ->weekly() 每周调用一次 ->weeklyOn($day, $time = 0:0) example: ->weeklyOn(0, 8:00)每周日8点调用,0,7都表示周日,1-6,相对应 ->monthly() 每月调用一次 ->monthlyOn($day, $time = 0:0) emaple: ->monthlyOn(5, 9:00) 每月5号9:00调用 ->twiceMonthly($first = 1, $second = 16) 每月调用2次,如果没理解错应该是默认每月1号零点和16号零点(15号24点),没测试 ->quarterly() 每季度调用一次 ->yearly() 每年调用一次
经验分享 程序员 微信小程序 职场和发展