午夜免费_欧美一级免费看_欧美日韩一区二区视频在线观看_午夜视频在线_日本特黄a级高清免费大片_成年人黄色小视频

旧版(3.5.x版本之前)定时任务

开发者执行定时任务会通过 Linux 的 Crontab 去实现,不方便去管理。EasySwoole 提供了根据 LinuxCrontab 规则的定时任务,最小粒度为1分钟。

创建一个定时任务

需要定义一个定时任务类继承 \EasySwoole\EasySwoole\Crontab\AbstractCronTask

定义执行规则

public static function getRule(): string
{
    // 定义执行规则 根据Crontab来定义
    return '*/1 * * * *';
}

定义 Crontab 名称

public static function getTaskName(): string
{
    // 定时任务的名称
    return 'custom crontab';
}

定义执行逻辑

public function run(int $taskId, int $workerIndex)
{
    // 定时任务的执行逻辑

    // 开发者可投递给task异步处理
    TaskManager::getInstance()->async(function (){
        // todo some thing
    });
}

定义异常捕获

public function onException(\Throwable $throwable, int $taskId, int $workerIndex)
{
    // 捕获run方法内所抛出的异常
}

注册 Crontab

EasySwoole 框架全局的 mainServerCreate 事件(即项目根目录的 EasySwooleEvent.php 文件)中进行定时任务注册

Crontab::getInstance()->addTask(CustomCrontab::class);

完整示例代码

<?php

namespace App\Crontab;

use EasySwoole\EasySwoole\Crontab\AbstractCronTask;
use EasySwoole\EasySwoole\Task\TaskManager;

class CustomCrontab extends AbstractCronTask
{
    public static function getRule(): string
    {
        // 定义执行规则 根据Crontab来定义
        return '*/1 * * * *';
    }

    public static function getTaskName(): string
    {
        // 定时任务的名称
        return 'CustomCrontab';
    }

    public function run(int $taskId, int $workerIndex)
    {
        // 定时任务的执行逻辑
        // 例如:每隔1分钟打印当前时间
        echo date('Y-m-d H:i:s') . PHP_EOL;
    }

    public function onException(\Throwable $throwable, int $taskId, int $workerIndex)
    {
        // 捕获run方法内所抛出的异常
    }
}

Crontab表达式

通用表达式:

    *    *    *    *    *
    -    -    -    -    -
    |    |    |    |    |
    |    |    |    |    |
    |    |    |    |    +----- day of week (0 - 7) (Sunday=0 or 7)
    |    |    |    +---------- month (1 - 12)
    |    |    +--------------- day of month (1 - 31)
    |    +-------------------- hour (0 - 23)
    +------------------------- min (0 - 59)

特殊表达式:

@yearly                    每年一次 等同于(0 0 1 1 *) 
@annually                  每年一次 等同于(0 0 1 1 *)
@monthly                   每月一次 等同于(0 0 1 * *) 
@weekly                    每周一次 等同于(0 0 * * 0) 
@daily                     每日一次 等同于(0 0 * * *) 
@hourly                    每小时一次 等同于(0 * * * *)

Crontab 管理

EasySwoole 内置对于 Crontab 的命令行操作,方便开发者友好的去管理 Crontab

可执行 php easyswoole.php crontab -h 来查看具体操作。

查看所有注册的Crontab

php easyswoole.php crontab show

停止指定的Crontab

php easyswoole.php crontab stop --name=TASK_NAME

恢复指定的Crontab

php easyswoole.php crontab resume --name=TASK_NAME

立即跑一次指定的Crontab

php easyswoole.php crontab run --name=TASK_NAME

版本强调

EasySwoole 3.3.0 版本如何定义:

<?php
namespace App\Crontab;

use EasySwoole\EasySwoole\Crontab\AbstractCronTask;

class TaskOne extends AbstractCronTask
{

    public static function getRule(): string
    {
        // TODO: Implement getRule() method.
        // 定时周期 (每小时)
        return '@hourly';
    }

    public static function getTaskName(): string
    {
        // TODO: Implement getTaskName() method.
        // 定时任务名称
        return 'taskOne';
    }

    static function run(\swoole_server $server, int $taskId, int $fromWorkerId,$flags=null)
    {
        // TODO: Implement run() method.
        // 定时任务处理逻辑
        var_dump('run once per hour');
    }
}
主站蜘蛛池模板: 一本久道竹内纱里奈中文字幕 | 在线一区免费 | 999国产在线 | 一区二区三区四区五区中文字幕 | 日韩精品成人免费视频 | 国产欧美一二三区 | 国产精品久久网站 | 日本网站在线 | 91手机在线播放 | a色在线 | 91.xxx.高清在线 | 在线国产视频一区 | 99热精品久久| 在线精品99 | 国产精品九九九九 | 亚洲天堂一 | 91sex国产海角社区 | 被下了药糟蹋h文 | 国产精品日本欧美一区二区三区 | 亚洲国产精品免费观看 | 国产精品一二三不卡 | 91亚洲国产成人精品性色 | 国产深夜福利在线观看 | 91视频看片| 九一视频在线看 | 九九九伊在人线综合2023 | 99久久久久久国产精品 | 新91在线 | 一区二区三区不卡免费视频97 | 91玖玖| 国产综合不卡 | 九色视频精品 | 91视频免费高清 | 亚洲综合四区 | 免费视频亚洲 | 91精品一区二区三区在线 | 久久久久成人免费看a含羞草久色 | 91视频在线免费观看 | 91精品在线观看入口 | 91在线高清视频 | 99久久婷婷国产综合精品免费 |