1. 程式人生 > >Swoft 踩坑筆記十二 - 定時任務

Swoft 踩坑筆記十二 - 定時任務

開啟定時任務,需要修改根目錄下的 .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 * * *")

以此類推。

如果遇到設定了沒效果,那就是在當前分鐘設定了是無效的,你得設定下一分鐘的。

下一篇:HTTP驗證器 Validator