亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

定時任務

開發者執行定時任務會通過 Linux 的 Crontab 去實現,不方便去管理。EasySwoole 提供了根據 LinuxCrontab 規則的定時任務,最小粒度為1分鐘。

注意:舊版本(3.5.x 之前版本)的定時任務的使用請查看 舊版本(3.5.x之前)定時任務

創建一個定時任務

需要定義一個定時任務類實現 \EasySwoole\Crontab\JobInterface 接口。

定義執行規則

public function crontabRule(): string
{
    // 定義執行規則 根據Crontab來定義
    return '*/1 * * * *';
}

定義 Crontab 名稱

public function jobName(): string
{
    // 定時任務的名稱
    return 'CustomCrontab';
}

定義執行邏輯

public function run()
{
    // 定時任務的執行邏輯

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

定義異常捕獲

public function onException(\Throwable $throwable)
{
    // 捕獲run方法內所拋出的異常
}

注冊 Crontab

EasySwoole 框架全局的 mainServerCreate 事件(即項目根目錄的 EasySwooleEvent.php 文件的 mainServerCreate 方法中)中進行定時任務注冊。

public static function mainServerCreate(EventRegister $register)
{
    // 配置定時任務
    $crontabConfig = new \EasySwoole\Crontab\Config();

    // 1.設置執行定時任務的 socket 服務的 socket 文件存放的位置,默認值為 當前文件所在目錄
    // 這里設置為框架的 Temp 目錄
    $crontabConfig->setTempDir(EASYSWOOLE_TEMP_DIR);

    // 2.設置執行定時任務的 socket 服務的名稱,默認值為 'EasySwoole'
    $crontabConfig->setServerName('EasySwoole');

    // 3.設置用來執行定時任務的 worker 進程數,默認值為 3
    $crontabConfig->setWorkerNum(3);

    // 4.設置定時任務執行出現異常的異常捕獲回調
    $crontabConfig->setOnException(function (\Throwable $throwable) {
        // 定時任務執行發生異常時觸發(如果未在定時任務類的 onException 中進行捕獲異常則會觸發此異常回調)
    });

    // 創建定時任務實例
    $crontab = \EasySwoole\EasySwoole\Crontab\Crontab::getInstance($crontabConfig);

    // 注冊定時任務
    $crontab->register(new \App\Crontab\CustomCrontab());
}

完整使用示例代碼

在 EasySwoole 中使用

1.定義定時任務類,新增 \App\Crontab\CustomCrontab 文件,文件內容如下:

<?php

namespace App\Crontab;

use EasySwoole\Crontab\JobInterface;

class CustomCrontab implements JobInterface
{
    public function jobName(): string
    {
        // 定時任務的名稱
        return 'CustomCrontab';
    }

    public function crontabRule(): string
    {
        // 定義執行規則 根據 Crontab 來定義
        // 這里是每分鐘執行 1 次
        return '*/1 * * * *';
    }

    public function run()
    {
        // 定時任務的執行邏輯

        // 相當于每分鐘打印1次時間戳,這里只是參考示例。
        echo time();
    }

    public function onException(\Throwable $throwable)
    {
        // 捕獲 run 方法內所拋出的異常
    }
}

2.注冊定時任務,在 EasySwoole 框架全局的 mainServerCreate 事件(即項目根目錄的 EasySwooleEvent.php 文件的 mainServerCreate 方法中)中進行定時任務注冊,如下所示:

<?php

namespace EasySwoole\EasySwoole;

use App\Crontab\CustomCrontab;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\EasySwoole\Crontab\Crontab;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');
    }

    public static function mainServerCreate(EventRegister $register)
    {
        ###### 注冊一個定時任務 ######
        // 配置定時任務
        $crontabConfig = new \EasySwoole\Crontab\Config();

        // 1.設置執行定時任務的 socket 服務的 socket 文件存放的位置,默認值為 當前文件所在目錄
        // 這里設置為框架的 Temp 目錄
        $crontabConfig->setTempDir(EASYSWOOLE_TEMP_DIR);

        // 2.設置執行定時任務的 socket 服務的名稱,默認值為 'EasySwoole'
        $crontabConfig->setServerName('EasySwoole');

        // 3.設置用來執行定時任務的 worker 進程數,默認值為 3
        $crontabConfig->setWorkerNum(3);

        // 4.設置定時任務執行出現異常的異常捕獲回調
        $crontabConfig->setOnException(function (\Throwable $throwable) {
            // 定時任務執行發生異常時觸發(如果未在定時任務類的 onException 中進行捕獲異常則會觸發此異常回調)
        });

        // 創建定時任務實例
        $crontab = \EasySwoole\EasySwoole\Crontab\Crontab::getInstance($crontabConfig);

        // 注冊定時任務
        $crontab->register(new CustomCrontab());
    }
}

在 Swoole 中使用

<?php
use EasySwoole\Crontab\JobInterface;

require_once __DIR__ . '/vendor/autoload.php';

$http = new Swoole\Http\Server('0.0.0.0', 9501);

class JobPerMin implements JobInterface
{
    public function jobName(): string
    {
        return 'JobPerMin';
    }

    public function crontabRule(): string
    {
        return '*/1 * * * *';
    }

    public function run()
    {
        var_dump(time());
        return time();
    }

    public function onException(\Throwable $throwable)
    {
        throw $throwable;
    }
}

// 配置及注冊定時任務
$crontab = \EasySwoole\EasySwoole\Crontab\Crontab::getInstance();
$crontab->register(new JobPerMin());
$crontab->attachToServer($http);

$http->on('request', function ($request, $response) use ($crontab) {

    // 在 http 服務中直接觸發執行定時任務
    $ret = $crontab->rightNow('JobPerMin');

    $response->header('Content-Type', 'text/plain');
    $response->end('Hello World ' . $ret);
});

$http->start();

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 * * * *)
亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    精品一区二区国产| 午夜亚洲性色视频| 麻豆久久久9性大片| 国产精品日本一区二区| 欧美二区不卡| 无码免费一区二区三区免费播放 | 国产在线精品一区二区中文| 欧美男人的天堂| 国产经典一区二区三区| 久久激情综合| 国产精品手机在线| 亚洲高清在线播放| 国内精品久久久久久久97牛牛| 亚欧精品在线| 亚洲成人午夜在线| 午夜欧美性电影| 亚洲精品乱码视频| 亚洲一区二区三区精品视频| 亚洲人成网站在线观看播放| 日本欧洲国产一区二区| 日韩av不卡播放| 亚洲高清在线观看一区| 亚洲欧洲精品一区| 亚洲砖区区免费| 午夜激情一区| 最新亚洲一区| 亚洲综合电影一区二区三区| 母乳一区在线观看| 久久综合福利| 久久久精品动漫| 色一情一区二区三区四区| 亚洲欧洲精品一区二区三区波多野1战4| 日韩国产欧美一区| 午夜精品一区二区三区四区| 亚洲激情视频| 久久亚洲精品伦理| 免费国产在线精品一区二区三区| 免费国产一区| 欧美在线1区| 国产一区二区高清| 国产乱码精品一区二区三区日韩精品| 粉嫩av一区二区三区免费观看| 精品国产一区二区三区免费| 涩涩日韩在线| 黄色成人av网站| 久久一区激情| 日韩偷拍一区二区| 一本久道久久久| 国产精品二区在线| 亚洲欧洲一区二区| 四虎永久在线精品免费一区二区| 亚洲黄色一区二区三区| 日韩视频在线观看国产| 动漫美女被爆操久久久| 亚洲精品影院| 性感少妇一区| 亚洲国产婷婷香蕉久久久久久99 | 久久中文在线| 亚欧洲精品在线视频免费观看| 亚洲国产99| 国产精品一区视频| 国模精品娜娜一二三区| 国产成人精品日本亚洲11| 影音先锋在线亚洲| 91久久精品一区二区别| 综合操久久久| 99久久国产免费免费| 樱花www成人免费视频| 91黄色精品| 欧美日韩视频在线一区二区观看视频| 久久亚洲色图| 欧美日韩精品久久| 精品国产乱码久久久久软件| 国产综合精品| 欧美国产视频在线观看| 国产精品久久亚洲7777| 日韩中文一区二区三区| 91精品国产一区二区三区动漫 | 在线亚洲激情| 亚洲成色www久久网站| 久久亚洲免费| 激情欧美日韩一区| 久久久久一区二区| 国产亚洲一区在线播放| 亚洲美女搞黄| 国产精品日本一区二区| 亚洲日本黄色| 亚洲黄色成人久久久| 国产综合av一区二区三区| 在线亚洲欧美| 欧美日韩影院| 日韩国产精品一区二区三区| 久久久精品网| 99精品国产在热久久| 一本一道久久久a久久久精品91| 国产精品美女黄网| 久久久久se| 一本色道88久久加勒比精品| 中文字幕在线亚洲精品| 日韩欧美99| 欧美成人一区二区在线| 91久久极品少妇xxxxⅹ软件| 亚洲视频福利| 国产精品国色综合久久| 中文字幕一区二区三区5566| 日本婷婷久久久久久久久一区二区| 3d蒂法精品啪啪一区二区免费| 亚洲日本欧美在线| 欧美区高清在线| 欧美 日韩 国产一区二区在线视频| 欧美18视频| 欧美动漫一区二区| 久久人人97超碰人人澡爱香蕉| 国产精品亚洲一区| 国产福利久久精品| www.成人av.com| 国产91免费视频| 国产 高清 精品 在线 a| 91精品黄色| 国产精品一区二区三区在线| 成人自拍偷拍| 久久免费99精品久久久久久| 97人人模人人爽人人少妇| 国产精品视区| 97久久人人超碰caoprom欧美| 97久久天天综合色天天综合色hd| 3d动漫啪啪精品一区二区免费| 久久一二三四| 精品一区二区三区日本| 女女同性女同一区二区三区91| 青青草久久网络| 一区在线电影| 黑丝一区二区三区| 亚洲综合丁香| 国产精品.com| 日韩av电影免费播放| 午夜欧美一区二区三区免费观看| 一区二区三区四区免费视频| 午夜亚洲福利| 亚洲尤物精选| 狠狠久久综合婷婷不卡| 午夜免费电影一区在线观看| 国产精品99免费看| 亚洲欧美日韩综合国产aⅴ| 久久综合网络一区二区| 欧美lavv| 国产精品多人| 久久国产手机看片| 久久精彩视频| 午夜日韩av| 久久国产精品一区二区三区| 精品国产日本| 欧美日一区二区在线观看| 亚洲综合电影一区二区三区| 久久久久久九九九九| 欧美激情偷拍| 91成人免费观看| 一级做a爰片久久| 先锋影音久久久| 欧美大香线蕉线伊人久久| 亚洲一级二级| 九九九九九精品| 影音先锋亚洲一区| 国产一区二区不卡视频在线观看| 中文一区一区三区免费| 久久久精彩视频| 一区二区免费电影| 久久综合影音| 欧美片第1页综合| 国产精品夜夜夜一区二区三区尤| 欧美精品不卡| 激情一区二区三区| 伊人久久婷婷| 日韩欧美三级一区二区| 媚黑女一区二区| 中国人体摄影一区二区三区| 国产精品yjizz| 亚洲第一伊人| 日韩福利一区二区三区| 久久久噜噜噜久久狠狠50岁| 欧美在线91| 欧美日韩精品免费在线观看视频| 国产精品美女久久久| 一道精品一区二区三区| 国产视色精品亚洲一区二区| av成人毛片| 欧美一区影院| 日本午夜精品一区二区| 懂色中文一区二区三区在线视频| 精品1区2区| 在线免费一区| 欧美一区二区三区四区夜夜大片 | 国产深夜精品| 国产精品videosex极品| 日本三级中国三级99人妇网站| 91成人免费看| 亚洲欧美日韩一区在线观看| 激情成人综合| 国内精品久久久久久久影视蜜臀 | 99久久一区三区四区免费|