为了账号安全,请及时绑定邮箱和手机立即绑定

laravel定时任务以及定时函数详解

2018.07.17 18:25 6930浏览

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

php artisan make:command Test

   laravel5.2及以前的版本(emmmm如果没记错的话,是这样的)使用make:console命令

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

https://img1.sycdn.imooc.com/5b4db68a0001294c03420312.jpg

打开Test.php

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;

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 mixed
     */
    public function handle()
    {
        //主要业务逻辑在这些
        Log::info('测试任务');
    }
}

然后要注册这个任务。

在Kernel.php中完成注册。

https://img1.sycdn.imooc.com/5b4db7ef000178f206400341.jpg

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

https://img1.sycdn.imooc.com/5b4db8290001ef4e02270057.jpg

可以在日志文件中看到

https://img1.sycdn.imooc.com/5b4db83d0001897705350121.jpg

说明我们已经成功调用了这个测试任务。

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

https://img1.sycdn.imooc.com/5b4db8af0001872908020380.jpg

我像这样我就写了每天上午9点调用这个任务。

详细说下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()  每年调用一次

复习了一波英语很开心!!!

真TM累,手都快打残了。。。


文章原创首发于慕课网手记https://www.imooc.com/article,如需转载请注明出处,谢谢合作。










点击查看更多内容
PHP

本文原创发布于慕课网 ,转载请注明出处,谢谢合作

1人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消