Schedule 任務排程,讓Laravel 自動執行排定任務

Schedule 任務排程可以在很多種情況下使用到,比如說需要定期檢查某件事情完成與否,或扯定期將資料送往另一台伺服器

又或者最常見的將電子報寄送,都是透過這種排成任務的方式來執行

參考文件 :https://kejyuntw.gitbooks.io/laravel-5-learning-notes/services/scheduling/services-scheduling-README.html

laravel schedule

基本概念

對Laravel 還不是很熟悉的朋友請先看過以下文章喔

Composer 幫PHP套件找一個家

用Laravel 來建立你的第一個網站

 

首先,最基本的觀念是透過作業系統的定期排程工作來完成事件的觸發

在windows上可以用排程工作設定需要定期執行哪個檔案(通常可以寫成.bat)

在linux上可以透過

來編輯需要排成的工作指令,舉例

值得注意的是,前面0 3 跟 * 代表的是時間,分別說明如下

  • 分(0-59)
  • 時(0-23)
  • 每個月第幾天(1-31)
  • 月份(1-12)
  • 每週的第幾天(0-6),0代表星期日其他依序

參考範例

 

Larvel 實作

透過作業系統排程每分鐘執行 schedule:run 指令

 

舉例說明

我們將要排程的工作寫在app/Console/Command/test.php

重點 :需要執行工作的地方寫在handle()中

以上設定完成之後可以透過指令直接執行

接著要在laravel中定義此排程工作,編輯檔案 app/Console/Command/Kernal.php

大略會長成這樣子

接著就會在資料庫中看到每分鐘記錄下來的資料了

 

避免重複執行

有些排程工作可能需要一點時間才能做完,修改$schedule指令可以避免工作還沒完成又再次進入工作

 

首頁 » 技術文章 » Laravel » Schedule 任務排程,讓Laravel 自動執行排定任務