日韩在线观看-日韩在线成人-日韩在线不卡视频-日韩在线不卡视频-国产精品99-国产精品99

舊版(3.5.x版本之前)定時(shí)任務(wù)

開(kāi)發(fā)者執(zhí)行定時(shí)任務(wù)會(huì)通過(guò) Linux 的 Crontab 去實(shí)現(xiàn),不方便去管理。EasySwoole 提供了根據(jù) LinuxCrontab 規(guī)則的定時(shí)任務(wù),最小粒度為1分鐘。

創(chuàng)建一個(gè)定時(shí)任務(wù)

需要定義一個(gè)定時(shí)任務(wù)類(lèi)繼承 \EasySwoole\EasySwoole\Crontab\AbstractCronTask

定義執(zhí)行規(guī)則

public static function getRule(): string
{
    // 定義執(zhí)行規(guī)則 根據(jù)Crontab來(lái)定義
    return '*/1 * * * *';
}

定義 Crontab 名稱(chēng)

public static function getTaskName(): string
{
    // 定時(shí)任務(wù)的名稱(chēng)
    return 'custom crontab';
}

定義執(zhí)行邏輯

public function run(int $taskId, int $workerIndex)
{
    // 定時(shí)任務(wù)的執(zhí)行邏輯

    // 開(kāi)發(fā)者可投遞給task異步處理
    TaskManager::getInstance()->async(function (){
        // todo some thing
    });
}

定義異常捕獲

public function onException(\Throwable $throwable, int $taskId, int $workerIndex)
{
    // 捕獲run方法內(nèi)所拋出的異常
}

注冊(cè) Crontab

EasySwoole 框架全局的 mainServerCreate 事件(即項(xiàng)目根目錄的 EasySwooleEvent.php 文件)中進(jìn)行定時(shí)任務(wù)注冊(cè)

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
    {
        // 定義執(zhí)行規(guī)則 根據(jù)Crontab來(lái)定義
        return '*/1 * * * *';
    }

    public static function getTaskName(): string
    {
        // 定時(shí)任務(wù)的名稱(chēng)
        return 'CustomCrontab';
    }

    public function run(int $taskId, int $workerIndex)
    {
        // 定時(shí)任務(wù)的執(zhí)行邏輯
        // 例如:每隔1分鐘打印當(dāng)前時(shí)間
        echo date('Y-m-d H:i:s') . PHP_EOL;
    }

    public function onException(\Throwable $throwable, int $taskId, int $workerIndex)
    {
        // 捕獲run方法內(nèi)所拋出的異常
    }
}

Crontab表達(dá)式

通用表達(dá)式:

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

特殊表達(dá)式:

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

Crontab 管理

EasySwoole 內(nèi)置對(duì)于 Crontab 的命令行操作,方便開(kāi)發(fā)者友好的去管理 Crontab

可執(zhí)行 php easyswoole.php crontab -h 來(lái)查看具體操作。

查看所有注冊(cè)的Crontab

php easyswoole.php crontab show

停止指定的Crontab

php easyswoole.php crontab stop --name=TASK_NAME

恢復(fù)指定的Crontab

php easyswoole.php crontab resume --name=TASK_NAME

立即跑一次指定的Crontab

php easyswoole.php crontab run --name=TASK_NAME

版本強(qiáng)調(diào)

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.
        // 定時(shí)周期 (每小時(shí))
        return '@hourly';
    }

    public static function getTaskName(): string
    {
        // TODO: Implement getTaskName() method.
        // 定時(shí)任務(wù)名稱(chēng)
        return 'taskOne';
    }

    static function run(\swoole_server $server, int $taskId, int $fromWorkerId,$flags=null)
    {
        // TODO: Implement run() method.
        // 定時(shí)任務(wù)處理邏輯
        var_dump('run once per hour');
    }
}
主站蜘蛛池模板: 贤惠好儿媳在线观看完整版 | 山东教育电视台直播| 大唐狄仁杰演员表介绍| 曹查理电影大全免费观看| 《杨贵妃淫史》三级| 唐人街探案网剧第二季| 杨梵| 核舟记课堂笔记| free hd xxxx moms movie777| 大森静香| 公共事务在线| 色在线免费观看| 草船借箭剧本| 大场面| 荒山之夜| 女生被草视频| 大场鸫| 凤凰电视台| artist什么意思| 猪哥会社| 热天午后| 曹查理新剧《三姐妹》| 李保国电影| 又见阿郎电视剧免费观看| 鬼迷心窍1994| 世界上最有杀气的国歌| 寡妇激情| 诈欺游戏电影| 果戈里起点女的被劫走是多少分钟 | 电影终结者| 情侣网站视频| 小霸王解说呐| 白事专用歌曲100首| 杰西卡·布朗·芬德利| 抖音浏览器| 陈慕义| 妻子的电影| 音乐会电视剧免费观看完整版| 孽债电视剧演员表| 美女自拍偷拍| 栏目大全|