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

Task

EasySwoole 3.3.0+ 異步任務放棄了 Swoole 的原生 task,采用獨立組件實現。

相對于原生 Swoole Taskeasyswoole/task 組件實現了以下功能:

  • 可以投遞閉包任務
  • 可以在 TaskWorker 等其他自定義進程繼續投遞任務
  • 實現任務限流與狀態監控

安裝

composer require easyswoole/task

框架中使用

同步調用:

\EasySwoole\EasySwoole\Task\TaskManager::getInstance()->sync(function (){
    echo 'sync';
});

異步調用:

\EasySwoole\EasySwoole\Task\TaskManager::getInstance()->async(function () {
    echo 'async';
}, function ($reply, $taskId, $workerIndex) {
    // $reply 返回的執行結果
    // $taskId 任務id
    echo 'async success';
});

由于 php 本身就不能序列化閉包,該閉包投遞是通過反射該閉包函數,獲取 php 代碼直接序列化 php 代碼,然后直接 eval 代碼實現的。
所以投遞閉包無法使用外部的對象引用,以及資源句柄,復雜任務請使用任務模板方法。

任務模版

自定義一個任務模版

<?php

namespace App\Task;

use EasySwoole\Task\AbstractInterface\TaskInterface;

class CustomTask implements TaskInterface
{
    protected $data;

    public function __construct($data)
    {
        // 保存投遞過來的數據
        $this->data = $data;
    }

    public function run(int $taskId, int $workerIndex)
    {
        // 執行邏輯
    }

    public function onException(\Throwable $throwable, int $taskId, int $workerIndex)
    {
        // 異常處理
    }
}

如何使用

$task = \EasySwoole\EasySwoole\Task\TaskManager::getInstance();

// 投遞異步任務
$task->async(new CustomTask(['user' => 'custom']));

// 投遞同步任務
$data = $task->sync(new CustomTask(['user' => 'custom']));

投遞返回值

easyswoole/task 組件在 1.0.8 及以前版本支持,如下 4 個投遞返回值:

  • > 0 投遞成功(異步任務專屬,返回 taskId,同步任務直接返回 run() 方法運行之后返回的值)
  • -1 task 進程繁忙,投遞失敗 (已經到達最大運行數量 maxRunningNum )
  • -2 投遞數據解包失敗,當投遞數據傳輸時數據異常時會報錯,此錯誤為組件底層錯誤,一般不會出現
  • -3 任務出錯 (該任務執行時出現異常錯誤,被組件攔截并輸出錯誤)

1.0.9 ~ 1.1.1 版本,除了支持上述 4 個投遞返回值,還新增支持了以下 2 個投遞返回值:

  • -4 投遞的任務數據不合法,一般是投遞了不能序列化的數據才會出現。
  • -5 投遞的任務在運行時出錯

在最新的版本及以后版本中,又新增支持了以下 2 個投遞返回值:

  • -6 投遞的任務數據包已過期,一般是 Task 進程比較繁忙時才會出現。
  • -7 投遞任務時,任務運行完成后沒有任何數據返回。一般是因為執行任務時間過長導致 UnixSocket 超時,才會出現。

獨立使用

該組件可獨立使用,代碼如下:

<?php

use EasySwoole\Task\Config;
use EasySwoole\Task\Task;

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

/**
 * 配置項中可以修改工作進程數、臨時目錄,進程名,最大并發執行任務數,異常回調等
 */
$config = new Config();
$task = new Task($config);

// 添加 swoole 服務
$http = new \Swoole\Http\Server("0.0.0.0", 9501);

// 注入 swoole 服務,進行創建 task 進程
$task->attachToServer($http);

// 在 onrequest 事件中調用 task (其他地方也可以,這只是示例)
$http->on("request", function (\Swoole\Http\Request $request, \Swoole\Http\Response $response) use ($task) {
    if (isset($request->get['sync'])) {
        // 同步調用 task
        $ret = $task->sync(function ($taskId, $workerIndex) {
            return "{$taskId}.{$workerIndex}";
        });
        $response->end("sync result " . $ret);
    } else if (isset($request->get['status'])) {
        var_dump($task->status());
    } else {
        // 異步調用 task
        $id = $task->async(function ($taskId, $workerIndex) {
            \co::sleep(1);
            var_dump("async id {$taskId} task run");
        });
        $response->end("async id {$id} ");
    }
});
// 啟動服務
$http->start();

版本強調

框架低版本升級為 EasySwoole 3.3.0+,需要手動進行配置修改。

需要刪除 MAIN_SERVER.SETTING.task_worker_numMAIN_SERVER.SETTING.task_enable_coroutine 配置項。

請在項目根目錄的 dev.php/produce.phpMAIN_SERVER 配置項中,增加 TASK 子配置項:

<?php

// 這里省略

return [
    // 這里省略 ...

    'MAIN_SERVER' => [

        // 這里省略 ...

        'TASK' => [
            'workerNum' => 4,
            'maxRunningNum' => 128,
            'timeout' => 15
        ]
    ],

    // 這里省略 ...
];

Task管理

查看所有Task進程的狀態

php easyswoole.php task status

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    国产欧美精品| 久久日韩精品| 亚洲欧美日韩精品久久久 | 亚洲激情二区| 国产精品综合| 久久精品ww人人做人人爽| 欧美日韩天天操| 亚洲国产高清一区| 国产亚洲精品美女久久久m| 亚洲国产成人不卡| 国产欧美短视频| 欧美日韩国产精品一区二区| 欧美私人啪啪vps| 狼狼综合久久久久综合网 | 国产视频一区二区三区四区| 亚洲精品一区二区三区樱花| 国产婷婷精品| 日本一区二区三区四区高清视频| 亚洲精品影视| 日本一区二区视频| 亚洲一区久久| 亚洲精品8mav| 99国产超薄丝袜足j在线观看 | 宅男一区二区三区| 久久狠狠婷婷| 欧美国产日本| 鲁鲁视频www一区二区| 亚洲国产精品久久久久久女王| 国产66精品久久久久999小说| 蜜桃网站成人| 亚洲欧洲另类精品久久综合| 欧美国产视频在线观看| 国内一区在线| 国产精品久久久久久久久久直播| 毛片一区二区| 久久一综合视频| 久久综合亚州| 亚洲国产精品123| 婷婷久久伊人| 精品91视频| 久久亚洲国产精品一区二区| 欧美 日韩 国产在线| 国产亚洲欧美另类一区二区三区| 日韩精品国内| 国产在线精品一区二区三区》 | 亚洲毛片播放| 一本一生久久a久久精品综合蜜| 91精品国产99久久久久久红楼 | 婷婷四月色综合| 国产经典一区二区三区| 国产精品美女黄网| 一区在线免费| 欧美日韩在线精品一区二区三区| 久久久精品国产一区二区三区| 一区二区三区欧美在线| 欧美精品一区二区三区久久久竹菊| 久久久久久久久久久久久9999| 久久中文在线| 51国偷自产一区二区三区| 国产日韩亚洲| 亚洲三级国产| 亚洲黄色影片| 99re国产精品| 亚洲激情影院| 亚洲国产一区二区精品专区| 激情欧美一区二区三区| 国产精品videosex极品| 欧美激情第六页| 欧美日韩亚洲免费| 国产精品草草| 好看的亚洲午夜视频在线| 一本一道久久久a久久久精品91| 色99中文字幕| 欧美成人一品| 午夜国产精品视频| 激情欧美一区二区三区| 亚洲视频狠狠| 国产精品美女| 97人人模人人爽人人少妇| 成人动漫视频在线观看完整版| 成人情视频高清免费观看电影| 粉嫩av免费一区二区三区| 国产一区二区中文字幕免费看| 成人午夜电影免费在线观看| 国产精品 日韩| 日本精品国语自产拍在线观看| 日韩色妇久久av| 欧美精品激情| 午夜一区二区三视频在线观看| 久久国产精品免费一区| 国产综合欧美在线看| 日韩免费三级| 亚洲天堂久久| 99re在线视频上| 欧美激情专区| 在线不卡日本| 国产婷婷精品| 狠狠久久综合婷婷不卡| 日韩欧美亚洲日产国产| 国产精品videosex极品| 久久久久久久久久久久久久一区| 国产精品免费一区二区三区观看| 欧美一区视久久| 亚洲性感美女99在线| 999在线观看免费大全电视剧| 欧美高清一区二区| 在线欧美三区| 国产美女精品在线观看| 夜夜爽99久久国产综合精品女不卡 | 日韩尤物视频| 91久久黄色| 国产日产精品一区二区三区四区| 综合一区中文字幕| 99国精产品一二二线| 你懂的国产精品| 久久一综合视频| 一区二区三区精品国产| 快she精品国产999| 欧美极品一区| 久久久久久九九九九| 正在播放亚洲| 日韩欧美视频一区二区三区四区| 国产精品裸体一区二区三区| 日韩av在线电影观看| 欧美亚洲三级| 欧美少妇一区| 日韩视频在线播放| 久久久蜜桃一区二区人| 国产在线精品一区二区中文| 中文字幕在线中文字幕日亚韩一区| 久久在线精品| 亚洲国产精品第一区二区三区 | 国产精品三区在线| 欧美日本中文| 国产日韩三区| 亚洲欧美日韩精品在线| 中文字幕中文字幕在线中心一区| 久久青草久久| 亚洲国产激情| 欧美精品麻豆| 日韩精品久久久毛片一区二区| 久久久精品动漫| 亚洲激情亚洲| 国产主播一区二区三区四区| 欧美一区二区综合| 翡翠波斯猫1977年美国| 国产伦精品一区二区三区照片91| 亚洲精品影院| 欧美精品一区三区在线观看| 91久久大香伊蕉在人线| 99热精品在线| 日韩亚洲一区在线播放| 国内外成人免费视频| 亚洲mv在线看| 影音先锋亚洲视频| 性欧美.com| 亚洲精品中文字幕乱码三区不卡| 免费久久久一本精品久久区| 精品一区二区日本| 国产在线精品一区二区中文| 丁香婷婷久久久综合精品国产| 亚洲在线免费| 久久性色av| 俄罗斯精品一区二区三区| 香蕉视频成人在线观看| 国产久一道中文一区| 亚洲一区二区成人| 久久精品一二三区| 999久久久| 国产欧美欧洲| 欧美精品一区二区三区四区五区| 韩日午夜在线资源一区二区| 精品一区二区三区日本| 免费一区二区三区在在线视频| 鲁鲁狠狠狠7777一区二区| 久久99精品久久久久久青青日本| 风间由美久久久| 欧美激情论坛| 在线不卡日本| 91久久极品少妇xxxxⅹ软件| 国产日韩欧美高清免费| 久久久精品网| 九九99玖玖| 一区二区免费电影| 精品电影一区| 另类国产ts人妖高潮视频| 久久久久久久欧美精品| 成人欧美一区二区三区视频| 国产伦一区二区三区色一情| 欧美自拍资源在线| 亚洲一区二区三区午夜| 亚洲国产激情| 不卡视频一区二区三区| 欧美久久久久久| 国内精品久久久久久久影视麻豆 | 国产尤物91| 亚洲蜜桃在线| 亚洲一区二区伦理| 欧美中文娱乐网| 亚洲欧洲午夜|