1.首先我们先创建一个Test.php测试任务
php artisan make:command Test
laravel5.2及以前的版本(emmmm如果没记错的话,是这样的)使用make:console命令
创建完成后会在app/Console/Commands/目录下,如图
打开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中完成注册。
注册完成后。我们就可以调用这里的任务了。
可以在日志文件中看到
说明我们已经成功调用了这个测试任务。
然后,我们这里着重说一下定时任务的调度。在kernel.php中还有一个schedule函数,这个就是用来做定时调度的。
我像这样我就写了每天上午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,如需转载请注明出处,谢谢合作。