fm-labs/cakephp-cron

CakePHP 的 Cron 任务插件

安装次数: 61

依赖关系: 1

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:cakephp-plugin

2.2.0 2023-03-27 18:02 UTC

This package is auto-updated.

Last update: 2024-09-27 21:21:10 UTC


README

CakePHP 的 Cronjob 插件

安装

composer require fm-labs/cakephp-cron

创建自定义 CronTask

namespace App\Cron

class MyCronTask implements \Cron\Cron\ICronTask {

    public execute() {
        // ... do some magic ...
        //return new CronTaskResult(false, "Something went wrong")
        return new CronTaskResult(true, "Success")
    }
}

配置

在你的 Plugin.phpbootstrap.php

\Cron\Cron::setConfig('my_cron', [
    'className' => \App\Cron\MyCronTask,
    'interval' => 3600, // interval in seconds
])

执行 Cron 任务

通过 Http / 浏览器

# to run a specific task
curl -v https://YOUR_BASE_URL/cron/my_cron

# to run all tasks 
curl -v https://YOUR_BASE_URL/cron/all

通过 CLI

# to run a specific task
./cake cron run my_cron

# to run all tasks
./cake cron run all

密码保护 Cron 任务执行

# to run all tasks 
curl -v https://USER:PASSWORD@YOUR_BASE_URL/cron/all

内部机制

  • 任务通过 Cron 类进行静态配置。
  • CronController 实例化 CronManager
  • CronManagerCron 类加载配置的任务,并在调用时
    • 实例化 cron 任务类(实现 ICronTask 接口)
    • 触发 Cron.beforeTask 事件
    • 执行 cron 任务
    • 触发 Cron.afterTask 事件