webman-tech/crontab-task

Webman plugin webman-tech/crontab-task

v1.2.0 2024-01-23 07:35 UTC

This package is auto-updated.

Last update: 2024-12-04 02:49:16 UTC


README

workerman/crontab 在 webman 中更加便捷的使用

安装

composer require webman-tech/crontab-task

特点

  • 基于 workerman/crontab
  • 支持单进程单个定时任务,和单进程多定时任务快捷配置(解决webman默认的单进程下起多个定时任务阻塞的问题),见配置 process.php
  • 定时任务常规 log 支持(start/end/exception),见配置 app.php

使用

  1. 创建 Task
<?php

namespace app\crontab\tasks;

use WebmanTech\CrontabTask\BaseTask;

class SampleTask extends BaseTask 
{
    /**
     * @inheritDoc
     */
    public function handle()
    {   
        // 实际业务
        echo date('Y-m-d H:i:s') . PHP_EOL;
    }
}
  1. 添加到 process

配置:config/plugin/webman-tech/crontab-task/process.php

<?php

return (new Schedule())
    // 添加单个定时任务,独立进程
    ->addTask('task1', '*/1 * * * * *', \WebmanTech\CrontabTask\Tasks\SampleTask::class)
    // 添加多个定时任务,在同个进程中(注意会存在阻塞)
    ->addTasks('task2', [
        ['*/1 * * * * *', \WebmanTech\CrontabTask\Tasks\SampleTask::class],
        ['*/1 * * * * *', \WebmanTech\CrontabTask\Tasks\SampleTask::class],
    ])
    ->buildProcesses();

命令

php webman crontab-task:list: 列出所有 crontab 定时任务

php webman make:crontab-task [name]: 创建 crontab task