Swoft 踩坑筆記十二 - 定時任務
阿新 • • 發佈:2018-12-25
開啟定時任務,需要修改根目錄下的 .env 中的CRONABLE=true
示例
建立 swoft/app/Tasks/DemoTask.php
<?php namespace App\Tasks; use Swoft\Task\Bean\Annotation\Task; use Swoft\Task\Bean\Annotation\Scheduled; /** * Demo task * * @Task("demo") */ class DemoTask { /** * crontab定時任務 * 每一秒執行一次 * * @Scheduled(cron="* * * * * *") */ public function timing() { echo "每一秒執行一次" . PHP_EOL; } }
@Scheduled
:設定觸發時間
只要你開啟了 CRONABLE
,然後把程式碼寫出來,只要一執行swoft就會自動執行,無需進行呼叫。也就是說,到了時間就會執行。
cron
格式
0 1 2 3 4 5 * * * * * * - - - - - - | | | | | | | | | | | +----- 星期幾 (0 - 6) (星期日=0) | | | | +----- 月 (1 - 12) | | | +------- 日 (1 - 31) | | +--------- 時 (0 - 23) | +----------- 分 (0 - 59) +------------- 秒 (0-59)
為方便測試,把swoft/app/Tasks/SyncTask.php
裡的最後倆個方法註釋掉,刪掉也隨便你,只是一個demo,不會影響swoft。
每分鐘的第10秒觸發
@Scheduled(cron="10 * * * * *")
每小時50分鐘10秒時觸發
@Scheduled(cron="10 50 * * * *")
每天21時01分鐘10秒時觸發
@Scheduled(cron="10 1 21 * * *")
以此類推。
如果遇到設定了沒效果,那就是在當前分鐘設定了是無效的,你得設定下一分鐘的。