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

猜你喜欢

转载自blog.csdn.net/weikaixxxxxx/article/details/85105800