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

定時任務

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

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

創(chuàng)建一個定時任務

需要定義一個定時任務類實現(xiàn) \EasySwoole\Crontab\JobInterface 接口。

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

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

定義 Crontab 名稱

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

定義執(zhí)行邏輯

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

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

定義異常捕獲

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

注冊 Crontab

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

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

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

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

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

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

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

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

完整使用示例代碼

在 EasySwoole 中使用

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

<?php

namespace App\Crontab;

use EasySwoole\Crontab\JobInterface;

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

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

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

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

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

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

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

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

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

        // 創(chuàng)建定時任務實例
        $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 服務中直接觸發(fā)執(zhí)行定時任務
    $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>
    好吊一区二区三区| 日韩国产美国| 国产三区精品| 一区二区三区成人精品| 亚洲国产欧美国产综合一区| 黄色亚洲免费| 国产精品丝袜xxxxxxx| 免费在线亚洲欧美| 国产视频一区二区三区四区| 日本高清视频一区二区三区| 欧美精品亚洲精品| 国产伦精品一区二区三区四区免费| 免费视频一区| 久久综合色一本| 国产精品www994| 老司机午夜精品视频| 欧美污视频久久久| 伊甸园精品99久久久久久| 老司机午夜精品视频| 日韩精品久久一区| 在线综合亚洲| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 久久久精品网| 欧美激情第一页在线观看| 欧美视频在线观看| aaa级精品久久久国产片| 日韩欧美一区二区三区四区五区 | 成人三级视频在线观看一区二区| 成人自拍爱视频| 亚洲国产精品久久久久久女王| 夜夜嗨av一区二区三区网站四季av| av一区和二区| 欧美天堂亚洲电影院在线观看 | 亚洲看片网站| 久久精品首页| 国产精品二区二区三区| 国产亚洲一区在线播放 | 日韩精品另类天天更新| 国产精品免费一区二区三区观看 | 在线日韩av永久免费观看| 国产91视觉| 亚洲激情一区二区| 色爱区成人综合网| 久久精品观看| 亚洲欧洲一区二区天堂久久| 快播日韩欧美| 5566中文字幕一区二区| 欧美久久久久久久| 欧美精品一区二区三区四区五区| 国产日韩欧美精品| 在线天堂一区av电影| 国产精品免费一区二区三区四区| 国产精品多人| 亚洲三区视频| 女女同性女同一区二区三区91| 亚洲深爱激情| 国产一区日韩一区| 亚洲一区二区不卡视频| 久久久久久九九九九| 久久精品在线| 一本色道久久综合| 欧美日韩另类丝袜其他| 亚洲精品国产精品国自产观看| 91成人免费视频| 国产视频一区在线观看一区免费| 一区二区三区四区五区视频| 蜜桃av噜噜一区二区三| 粉嫩av一区二区三区免费观看| 中文在线一区| 国产精品久久久亚洲一区| 激情综合电影网| 亚洲精选久久| 欧美午夜不卡| 欧美fxxxxxx另类| 亚洲精品乱码视频| 日韩精品欧美在线| 色就是色欧美| 亚洲精美视频| 亚洲图片都市激情| 亚洲蜜桃在线| 亚洲精品一卡二卡三卡四卡| 日韩aⅴ视频一区二区三区| 免费久久99精品国产自| 免费av一区二区三区| 国内外成人免费视频| 狠狠色噜噜狠狠色综合久| 国产精品免费一区二区三区在线观看 | 亚洲欧美文学| 欧美特黄一区| 99在线|亚洲一区二区| 亚洲一区成人| 国产一区二区视频在线免费观看| 国产欧美欧洲| 久久精品国产精品国产精品污| 狠狠色噜噜狠狠色综合久| 欧美午夜免费| 国产精品九九| 久久国产精品久久精品国产| 国产免费一区| 在线视频一区观看| 国产伦精品一区二区三区| 久久亚洲二区| 亚洲黄色一区二区三区| 亚洲承认在线| 国产另类自拍| 欧美日韩精品免费观看视一区二区| 欧美久久久久久久| 久久国产日韩| 午夜精品短视频| 伊人精品在线| 久久草视频在线看| 精品二区视频| 国产91精品入口17c| 伊人久久婷婷色综合98网| 一区二区三区四区国产| 国内一区二区三区在线视频| 在线视频福利一区| 久久精品女人的天堂av| 手机在线观看国产精品| 日韩视频一区| 欧美一区视久久| 在线亚洲激情| 日韩高清三级| 久热这里只精品99re8久| 亚洲欧美国产不卡| **亚洲第一综合导航网站 | 校园春色综合网| 日韩aⅴ视频一区二区三区| 99av国产精品欲麻豆| 好看的日韩精品| 永久久久久久| 久久伊人一区| 欧美亚洲免费在线| 欧美激情综合色综合啪啪| 97se亚洲综合| 91久久久久| 亚洲精品高清国产一线久久| 欧美专区在线| 欧美一区1区三区3区公司| 18成人免费观看网站下载| 国产精品vip| 五月天色一区| 国产精品久久久久久久久久直播| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 激情视频一区| 欧美激情第六页| 久久高清国产| 国内视频精品| 亚洲欧洲三级| 欧美lavv| 国产伦精品一区二区三区四区视频 | 999日本视频| aa国产精品| 国产精品videosex极品| 午夜久久资源| 久久国产日韩欧美| 波多野结衣成人在线| 国产欧美一区二区三区国产幕精品| 亚洲精品无人区| 日本视频一区二区在线观看| 国产精品二区在线观看| 亚洲在线黄色| 亚洲高清av| 狠狠色噜噜狠狠色综合久| 亚洲一区尤物| 亚洲人成网站在线观看播放| 久久久久久久有限公司| 国产综合动作在线观看| av一区二区三区四区电影| 51午夜精品| caoporn国产精品免费公开| 久久亚洲欧洲| 国产精品国产精品国产专区蜜臀ah | 欧美日韩亚洲一区二区三区四区| 久久性色av| 久久在线精品| 成人欧美视频在线| 国产精品免费视频一区二区| 国产精品视频免费观看| 精品久久久三级| 欧美一区2区三区4区公司二百| 噜噜噜噜噜久久久久久91| 久久精品国产美女| 污视频在线免费观看一区二区三区| 午夜免费电影一区在线观看| 自拍视频一区二区三区| 狠狠爱综合网| 免费不卡亚洲欧美| 国产99午夜精品一区二区三区 | 国产精品一区二区三区精品| 91视频网页| 精品日本一区二区| 欧美一二三区| 中文字幕中文字幕在线中心一区| 欧美日韩大片一区二区三区 | 水蜜桃一区二区| 午夜精品偷拍| 久久福利影视| 欧美国产综合视频| 午夜欧美理论片|