亚洲精品成人_精品成人一区_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>
    av激情久久| 99国产精品久久久久老师| 蜜桃视频在线观看成人| 成人免费91在线看| 久久久一本精品99久久精品66| 欧美精选一区| 国产亚洲在线观看| av免费观看久久| 一区在线免费观看| 99国精产品一二二线| 欧美日韩在线一二三| 另类av一区二区| 久久99久久精品国产| 一区二区三区的久久的视频| 亚洲精品国产日韩| 国产精品一区二区三区免费| 亚洲一区二区精品在线观看| 亚洲青色在线| 婷婷久久青草热一区二区| 狠狠综合久久av一区二区老牛| 国产欧美一区二区视频| 国产精品久久亚洲7777| 日韩不卡av| 欧美午夜精品久久久久久蜜| 最新不卡av| 一本色道精品久久一区二区三区| 欧美三区在线| 久久精品日产第一区二区三区| av成人国产| 特级西西444www大精品视频| 国产91视觉| 亚洲精品视频一区二区三区 | 久久国产精品免费一区| 中文字幕一区二区三区四区五区| 亚洲主播在线| 在线免费一区| 国产日韩欧美一区二区三区四区 | 99国内精品| 午夜精彩国产免费不卡不顿大片| 久久riav| 国产精品视频免费一区| 国产精品日韩二区| 亚洲图片欧洲图片日韩av| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 久久久久久亚洲精品不卡4k岛国| 亚洲欧洲一区二区天堂久久| 一区二区91美女张开腿让人桶| 欧美不卡三区| 国产精品视频免费一区| 丁香五月网久久综合| 六月婷婷久久| 国产精品美女xx| 亚洲理伦在线| 在线日韩av永久免费观看| 午夜一区二区三视频在线观看| 国产精品一国产精品最新章节| 亚洲在线电影| 亚洲一区二区精品在线| 欧美日韩三级电影在线| 亚洲不卡一卡2卡三卡4卡5卡精品| 国产精品国产精品| 国产传媒一区| 久久精品magnetxturnbtih| 国产一级二级三级精品| 97免费高清电视剧观看| www日韩av| 国产日本一区二区三区| 高清一区二区三区视频| 国产精品果冻传媒潘| 国产日韩一区欧美| 美脚丝袜一区二区三区在线观看| 免费成人看片网址| 日韩欧美亚洲日产国产| 视频在线观看成人| 欧美二区视频| 亚洲激情专区| 国产精品入口66mio| 久久久久久网| 国产精品区二区三区日本| 久久青青草综合| 日本一区二区三区www| 亚洲国产欧美一区二区三区不卡| 一区二区三区精品国产| 欧美国产视频在线观看| 亚洲激情网站| 欧美专区在线| 精品乱子伦一区二区三区| 欧美中日韩免费视频| 午夜激情一区| 国产精品美女| 精品乱色一区二区中文字幕| 亚洲免费久久| 亚洲国产精品一区二区第一页| 亚洲专区一区二区三区| 国产一区二区中文字幕免费看| 日韩国产精品一区二区| 欧美日韩成人一区二区三区| 国产精品一区在线播放| 国产一级二级三级精品| 亚洲伊人婷婷| 免费在线日韩av| 美女亚洲精品| 好吊色欧美一区二区三区视频| 亚洲欧美99| 欧美少妇一区| 亚洲国产1区| 国产女人水真多18毛片18精品 | 午夜精品久久久久99热蜜桃导演 | 亚洲人成免费| 精品一区二区三区日本| 女同性一区二区三区人了人一 | 国产精品一区亚洲| 欧美日韩在线精品| 99视频+国产日韩欧美| 精品乱子伦一区二区三区| 欧美午夜不卡| 国产精品伊人日日| 欧美精品18| 国外成人免费视频| 在线看无码的免费网站| 久久99国产精品99久久| 狠狠色狠狠色综合人人| 久久久久久久久一区| 国产亚洲网站| 亚洲五月六月| caoporn国产精品免费公开| 欧美欧美全黄| 免费亚洲一区二区| 久久精品综合一区| 欧美色综合网| 欧美精品亚洲精品| 米奇777在线欧美播放| 一本一道久久久a久久久精品91| 久久亚洲影院| 精品69视频一区二区三区Q| 美日韩精品免费| 欧美一级网站| 国内精品久久久久久久97牛牛 | 日韩亚洲视频在线| 日韩精品另类天天更新| 99精彩视频| 日韩一级精品| 欧美激情第8页| 久久久久国产精品视频| 91九色露脸| 日韩一级网站| 激情婷婷欧美| 中文字幕精品一区日韩| 欧美一区二区三区电影在线观看| 久久狠狠久久综合桃花| 99国产精品| 亚洲二区免费| 欧美日韩第一区| 亚洲在线播放电影| 麻豆精品视频| 99国产盗摄| 午夜亚洲性色福利视频| 亚洲图片欧洲图片日韩av| 日产精品久久久一区二区| 国产免费一区| 国产精品一区二区三区不卡| 美日韩免费视频| 国产精品日韩欧美一区二区三区| 亚洲图片欧洲图片日韩av| 欧美福利一区| 你懂的成人av| 欧美在线3区| 一区二区三区免费看| 日日夜夜精品网站| 日本一区二区三区www| 久久久久网址| 日韩av免费电影| 欧美一区1区三区3区公司 | 日韩香蕉视频| 9色国产精品| 亚洲一区二区三区欧美| 国产欧美日韩视频一区二区三区| 亚洲图片在线| 亚洲精品婷婷| 亚洲精品日韩在线观看| 国产精品久久777777毛茸茸| 国产伦精品一区二区| 亚洲综合不卡| 久久久精品午夜少妇| 91嫩草免费看| 国产精品一区二区三区不卡| 久久精品丝袜高跟鞋| 欧洲精品在线一区| 日韩成人av网站| 女人天堂亚洲aⅴ在线观看| 亚洲私人影院| 国产精品乱码一区二区三区| 性娇小13――14欧美| 国产精品swag| 欧美h视频在线| 欧美一区二区三区在线免费观看| 欧美日韩另类丝袜其他| 国产日韩欧美精品| 操人视频欧美| 国产精品一区二区在线观看 |