1.首先我們先創建一個Test.php測試任務
php artisan make:command Test
創建完成后會在app/Console/Commands/目錄下,如圖 laravel5.2及以前的版本(emmmm如果沒記錯的話,是這樣的)使用make:console命令
打開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/44321
來源:慕課網
本文原創發布於慕課網 ,轉載請注明出處,謝謝合作