laravel定時任務以及定時函數詳解


1.首先我們先創建一個Test.php測試任務

php artisan make:command Test

 


創建完成后會在app/Console/Commands/目錄下,如圖   laravel5.2及以前的版本(emmmm如果沒記錯的話,是這樣的)使用make:console命令

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/44321
來源:慕課網
本文原創發布於慕課網 ,轉載請注明出處,謝謝合作

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM