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

Task

EasySwoole 3.3.0+ 異步任務(wù)放棄了 Swoole 的原生 task,采用獨(dú)立組件實(shí)現(xiàn)。

相對(duì)于原生 Swoole Taskeasyswoole/task 組件實(shí)現(xiàn)了以下功能:

  • 可以投遞閉包任務(wù)
  • 可以在 TaskWorker 等其他自定義進(jìn)程繼續(xù)投遞任務(wù)
  • 實(shí)現(xiàn)任務(wù)限流與狀態(tài)監(jiān)控

安裝

composer require easyswoole/task

框架中使用

同步調(diào)用:

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

異步調(diào)用:

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

由于 php 本身就不能序列化閉包,該閉包投遞是通過(guò)反射該閉包函數(shù),獲取 php 代碼直接序列化 php 代碼,然后直接 eval 代碼實(shí)現(xiàn)的。
所以投遞閉包無(wú)法使用外部的對(duì)象引用,以及資源句柄,復(fù)雜任務(wù)請(qǐng)使用任務(wù)模板方法。

任務(wù)模版

自定義一個(gè)任務(wù)模版

<?php

namespace App\Task;

use EasySwoole\Task\AbstractInterface\TaskInterface;

class CustomTask implements TaskInterface
{
    protected $data;

    public function __construct($data)
    {
        // 保存投遞過(guò)來(lái)的數(shù)據(jù)
        $this->data = $data;
    }

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

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

如何使用

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

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

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

投遞返回值

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

  • > 0 投遞成功(異步任務(wù)專屬,返回 taskId,同步任務(wù)直接返回 run() 方法運(yùn)行之后返回的值)
  • -1 task 進(jìn)程繁忙,投遞失敗 (已經(jīng)到達(dá)最大運(yùn)行數(shù)量 maxRunningNum )
  • -2 投遞數(shù)據(jù)解包失敗,當(dāng)投遞數(shù)據(jù)傳輸時(shí)數(shù)據(jù)異常時(shí)會(huì)報(bào)錯(cuò),此錯(cuò)誤為組件底層錯(cuò)誤,一般不會(huì)出現(xiàn)
  • -3 任務(wù)出錯(cuò) (該任務(wù)執(zhí)行時(shí)出現(xiàn)異常錯(cuò)誤,被組件攔截并輸出錯(cuò)誤)

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

  • -4 投遞的任務(wù)數(shù)據(jù)不合法,一般是投遞了不能序列化的數(shù)據(jù)才會(huì)出現(xiàn)。
  • -5 投遞的任務(wù)在運(yùn)行時(shí)出錯(cuò)

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

  • -6 投遞的任務(wù)數(shù)據(jù)包已過(guò)期,一般是 Task 進(jìn)程比較繁忙時(shí)才會(huì)出現(xiàn)。
  • -7 投遞任務(wù)時(shí),任務(wù)運(yùn)行完成后沒(méi)有任何數(shù)據(jù)返回。一般是因?yàn)閳?zhí)行任務(wù)時(shí)間過(guò)長(zhǎng)導(dǎo)致 UnixSocket 超時(shí),才會(huì)出現(xiàn)。

獨(dú)立使用

該組件可獨(dú)立使用,代碼如下:

<?php

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

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

/**
 * 配置項(xiàng)中可以修改工作進(jìn)程數(shù)、臨時(shí)目錄,進(jìn)程名,最大并發(fā)執(zhí)行任務(wù)數(shù),異常回調(diào)等
 */
$config = new Config();
$task = new Task($config);

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

// 注入 swoole 服務(wù),進(jìn)行創(chuàng)建 task 進(jìn)程
$task->attachToServer($http);

// 在 onrequest 事件中調(diào)用 task (其他地方也可以,這只是示例)
$http->on("request", function (\Swoole\Http\Request $request, \Swoole\Http\Response $response) use ($task) {
    if (isset($request->get['sync'])) {
        // 同步調(diào)用 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 {
        // 異步調(diào)用 task
        $id = $task->async(function ($taskId, $workerIndex) {
            \co::sleep(1);
            var_dump("async id {$taskId} task run");
        });
        $response->end("async id {$id} ");
    }
});
// 啟動(dòng)服務(wù)
$http->start();

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

框架低版本升級(jí)為 EasySwoole 3.3.0+,需要手動(dòng)進(jìn)行配置修改。

需要?jiǎng)h除 MAIN_SERVER.SETTING.task_worker_numMAIN_SERVER.SETTING.task_enable_coroutine 配置項(xiàng)。

請(qǐng)?jiān)陧?xiàng)目根目錄的 dev.php/produce.phpMAIN_SERVER 配置項(xiàng)中,增加 TASK 子配置項(xiàng):

<?php

// 這里省略

return [
    // 這里省略 ...

    'MAIN_SERVER' => [

        // 這里省略 ...

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

    // 這里省略 ...
];

Task管理

查看所有Task進(jìn)程的狀態(tài)

php easyswoole.php task status

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    久久久久免费| 亚洲五月婷婷| 日韩国产精品一区二区| 国产精品久久波多野结衣| 国产精品夜夜夜一区二区三区尤| 欧美视频亚洲视频| 午夜性色一区二区三区免费视频 | 日本一区不卡| 极品日韩久久| 国产伦精品一区二区三| 99在线影院| 99精彩视频| 久久最新视频| 久久久青草婷婷精品综合日韩 | 久久精品国产美女| 国产伦精品一区二区三| 国产精品免费在线播放| 痴汉一区二区三区| 国产99视频精品免费视频36| 91国产丝袜在线放| 可以免费看不卡的av网站| 美女国产一区| av免费观看久久| 国产精品初高中精品久久| 成人动漫在线观看视频| 成人激情直播| 高清免费日韩| 精品国产一区二区三| 精品中文字幕人| 欧美日韩一区二区视频在线| 日本精品一区二区| 亚洲一区二区三区免费看| 自拍视频一区二区三区| 欧美日韩一区二区视频在线观看| 欧美日韩在线一区二区三区| 韩日视频一区| 亚洲激情二区| 美脚丝袜一区二区三区在线观看 | 一区二区三区四区视频在线观看| 亚洲一区二区三区午夜| 午夜精品偷拍| 在线亚洲成人| 久久中文欧美| 开心色怡人综合网站| 日韩在线第一区| 亚洲欧美综合国产精品一区| 激情久久久久久| 亚洲精品字幕| av一区二区在线看| 欧美激情专区| 中文字幕在线亚洲三区| 樱桃成人精品视频在线播放| 国产视频一区欧美| 99理论电影网| 日韩福利一区二区三区| 欧美激情一区| 国产一区91| 精品999在线观看| 一区二区三区欧美成人| 亚洲成人自拍视频| 91视频免费进入| 久久影院理伦片| 自拍偷拍亚洲色图欧美| 在线视频亚洲| 精品欧美日韩在线| 日韩欧美亚洲日产国产| 欧美一区二区三区另类| 99国内精品| 国产在线精品一区二区三区| 亚洲精品9999| 国产日韩精品久久| 精品国产综合久久| 欧美久久在线| 999久久久| 亚洲 国产 日韩 综合一区| 91久久精品一区二区别| 国产精品我不卡| 中文精品视频一区二区在线观看| 一区二区三区四区五区精品视频 | 18成人免费观看网站下载| 欧美极品日韩| 99热在线精品观看| 久久99国产精品99久久| 欧美另类视频在线| 懂色一区二区三区av片| 一区二区精品视频| 久久久久久久波多野高潮日日| 日韩精彩视频| 男人天堂欧美日韩| 亚洲美女网站18| 久久精品盗摄| 一区二区三区四区视频在线观看| 另类国产ts人妖高潮视频| 久久av一区二区| 欧美不卡在线| 亚洲一区二区网站| 日本精品视频一区| 一本一道久久久a久久久精品91| 99精品国产一区二区青青牛奶 | 亚洲精品国产精品国自产观看| 国产精品久久波多野结衣| 欧洲亚洲一区二区| 亚洲专区免费| 亚洲一区二区三区欧美| 不卡视频一区二区三区| 国内精品久久国产| 久久精品国产综合精品| 99亚洲视频| 亚洲欧洲日本国产| 99中文字幕| 在线看无码的免费网站| 欧美裸体网站| 久久午夜精品| 激情91久久| 欧洲一区二区在线| 久久久国产精品一区二区中文| 中文字幕一区二区三区5566| 国产欧美日韩一区| 在线视频亚洲| 欧美精品综合| 欧美日韩中文国产一区发布| 美日韩精品视频| 欧美日韩亚洲三区| 欧美亚州在线观看| 久久欧美肥婆一二区| 国产精品v欧美精品v日韩| 欧美日韩三区四区| 爱情岛论坛亚洲入口| 99精品国产高清一区二区| 中文字幕人成一区| 麻豆蜜桃91| aa成人免费视频| 国产精品入口66mio| 欧美久久99| 亚洲欧洲日韩综合二区| 久久久久欧美| 国产高清一区二区三区| 亚洲一区国产| 国内精品美女在线观看| 亚洲一区3d动漫同人无遮挡| 麻豆蜜桃91| 国产精品一区二区av| 男女精品网站| 国产午夜精品一区二区三区欧美| 午夜视频一区| 日韩欧美精品一区二区| 精品国产一二| dy888夜精品国产专区| 亚洲一卡久久| 一区二区免费在线视频| 好吊一区二区三区| 欧美一区综合| 一区二区三区免费看| 日韩国产精品一区二区| 鲁鲁视频www一区二区| 国外成人免费视频| 国产精品一码二码三码在线| 91丝袜脚交足在线播放| 久久中文欧美| 97视频资源在线观看| 男人天堂欧美日韩| 免费看的黄色欧美网站| 国产精品一区免费观看| 99xxxx成人网| 国产亚洲欧美一区二区| 国产精品视频| 午夜一区二区三视频在线观看| 一区二区动漫| 在线视频精品一区| 亚洲免费网址| 国产精品手机视频| 亚洲欧美卡通另类91av| 免费国产自线拍一欧美视频| 亚洲欧美春色| 久久日韩精品| 成人动漫视频在线观看完整版| 国产高清在线一区二区| 国产欧美亚洲日本| 久久精品国产精品青草色艺| 蜜桃网站成人| 天堂社区 天堂综合网 天堂资源最新版| 日本在线播放不卡| 亚洲资源在线网| 欧美日韩高清免费| 亚洲国产1区| 香蕉久久夜色| 风间由美久久久| 快播日韩欧美| 正在播放91九色| 红桃视频欧美| 国产精品日韩欧美一区二区| 91成人伦理在线电影| 国产九区一区在线| 日韩精品第一页| 欧美精品97| 国产精品尤物| 国产伦理一区二区三区| 欧美日韩精品一区| 欧美久色视频| 91精品久久香蕉国产线看观看|