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

SyncInvoker 組件

使用場景

Swoole4.x 后,提供了非常強大的協程能力,讓我們可以更好地壓榨服務器性能,提高并發。然而,目前 PHPSwoole 協程生態上,并不是很完善,比如:沒有協程版本的 MonogoDB 客戶端,而為了避免在 Worker 進程中調用了同步阻塞的 Api,例如在 Http 回調中使用了同步的 MonogoDB 客戶端,導致 Worker 進程退化為同步阻塞,導致無法完全地發揮協程的優勢。所以 EasySwoole 提供了一個同步程序協程調用轉化驅動。

設計原理

啟動自定義進程監聽 UnixSocket,然后在 Worker 進程中調用協程客戶端發送命令到自定義進程并處理,然后把處理結果返回給 Worker進程中的協程客戶端。

組件要求

  • php: >= 7.1.0
  • ext-swoole: >= 4.4.23
  • easyswoole/component: ^2.0
  • opis/closure: ^3.5

安裝方法

composer require easyswoole/sync-invoker

倉庫地址

easyswoole/sync-invoker

基本使用

首先定義一個驅動工作實例(可以定義多個),示例代碼如下:

<?php

namespace App\Utility;

use EasySwoole\SyncInvoker\AbstractDriver;

class MyInvokerDriver extends AbstractDriver
{
    private $stdclass;

    function __construct()
    {
        $this->stdclass = new \stdClass();
        parent::__construct();
    }

    public function test($a, $b)
    {
        $this->response($a + $b);
    }

    public function a()
    {
        $this->response('this is a');
    }

    public function getStdClass()
    {
        return $this->stdclass;
    }
}

然后注冊一個對應的調用器,示例代碼如下:

<?php

namespace App\Utility;

use EasySwoole\Component\Singleton;
use EasySwoole\SyncInvoker\SyncInvoker;

// 注冊一個對應的調用器
class MyInvoker extends SyncInvoker
{
    use Singleton;
}

最后在 EasySwoole全局事件 中 的 mainServerCreate 事件中進行注冊

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        // TODO: Implement initialize() method.
        date_default_timezone_set('Asia/Shanghai');
    }

    public static function mainServerCreate(EventRegister $register)
    {
        $invokerConfig = \App\Utility\MyInvoker::getInstance()->getConfig();

        // 以下這些配置都是可選的,可以使用組件默認的配置
        /*
        $invokerConfig->setServerName('EasySwoole'); // 設置服務名稱,默認為 'EasySwoole'
        $invokerConfig->setWorkerNum(3); // 設置 Worker 進程數,默認為 3
        $invokerConfig->setTempDir(EASYSWOOLE_ROOT . '/Temp'); // 設置 unixSocket 存放目錄,默認為 系統臨時文件存放目錄('/tmp')
        $invokerConfig->setMaxPackageSize(2 * 1024 * 1024); // 設置最大允許發送數據大小,默認為 2M
        $invokerConfig->setTimeout(3.0); // 設置服務調用超時時間,默認為 3.0 秒
        $invokerConfig->setAsyncAccept(true); // 設置異步接收數據,默認為 異步接收(不建議修改)
        $invokerConfig->setOnWorkerStart(function (\EasySwoole\SyncInvoker\Worker $worker) {
            var_dump('worker start at Id ' . $worker->getArg()['workerIndex']);
        }); // 設置服務啟動時執行的事件回調
        */

        $invokerConfig->setDriver(new \App\Utility\MyInvokerDriver()); // 設置驅動工作實例【必須配置】

        // 注冊 Invoker
        \App\Utility\MyInvoker::getInstance()->attachServer(ServerManager::getInstance()->getSwooleServer());
    }
}

在框架服務啟動后,即可在框架的任意位置調用 Invoker 服務了,使用示例如下:

例如在控制器中進行調用:

<?php

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;

class Index extends Controller
{
    public function index()
    {
        $ret = \App\Utility\MyInvoker::getInstance()->invoke()->test(1, 2);
        var_dump($ret);
        var_dump(\App\Utility\MyInvoker::getInstance()->invoke()->a());
        $ret = \App\Utility\MyInvoker::getInstance()->invoke()->callback(function (\App\Utility\MyInvokerDriver $driver) {
            $std = $driver->getStdClass();
            if (isset($std->time)) {
                return $driver->response($std->time);
            } else {
                $std->time = time();
                return $driver->response('new set time');
            }
        });
        var_dump($ret);
    }
}

/**
 * 輸出結果:
 * int(3)
 * string(9) "this is a"
 * string(12) "new set time"
 * int(3)
 * string(9) "this is a"
 * int(1611071672)
 */

注意事項

  • 盡量使用函數名調用方式,閉包方式調用會存在部分閉包函數序列化失敗問題
  • 傳遞參數,返回結果盡量用數組或者字符串傳遞,資源對象無法序列化
亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    久久午夜av| 成人精品一二区| 亚洲一区二区三区午夜| 国模一区二区三区私拍视频| 国产精品视频福利| 欧美尤物一区| 欧美精品一区在线| 亚洲激情一区二区三区| 成人在线视频电影| 欧洲一区二区日韩在线视频观看免费| 亚洲精品免费在线看| 国产日韩欧美综合精品| 97av影视网在线观看| 欧美激情论坛| 亚洲免费黄色| 亚洲免费播放| 日本不卡一区二区三区在线观看| 欧美一区二区视频17c | 久久大逼视频| 欧美污视频久久久| 亚洲国产高清视频| 国产伦精品一区二区三区视频免费| 免费h精品视频在线播放| 国内外成人免费视频| 粉嫩精品一区二区三区在线观看 | 亚洲精品极品| 久久久婷婷一区二区三区不卡| 欧美精品午夜| 国产精品免费观看高清| 国内激情久久| 久久久综合亚洲91久久98| 欧美日韩国产三区| 国产伦视频一区二区三区| 欧美日韩高清免费| 精品日本一区二区| 国产日韩三区| 女生裸体视频一区二区三区| 国产精品区一区二区三在线播放 | 伊人久久av导航| 美媛馆国产精品一区二区| 中文精品视频一区二区在线观看| 日韩高清国产精品| 99影视tv| 在线视频一区观看| 欧美国产三区| 欧美凹凸一区二区三区视频| 国产精品久久久一区二区三区| 伊人久久婷婷色综合98网| 国产视频一区二区三区四区| 亚洲一区二区三区涩| 精品91免费| 在线免费观看一区二区三区| 欧美xxxx黑人又粗又长密月 | 免费精品视频一区| av日韩免费电影| 国产欧美一区二区视频| 国产一区清纯| 中文字幕一区二区三区四区五区| 免费观看成人高| 狠狠色伊人亚洲综合网站色| 另类激情亚洲| 麻豆亚洲精品| 国产精品区免费视频| 激情久久综合| 亚洲国产mv| 中文欧美日韩| 国产欧美日韩一区二区三区| 国产精品二区在线观看| 欧美黄免费看| 亚洲私拍自拍| 亚洲精品人人| 国产一区二区三区奇米久涩| 亚洲美女91| 久久久久高清| 国产成人精品免费视频大全最热| 2014亚洲精品| 国产二区不卡| 日韩精品福利视频| 一区二区av| 亚洲国产免费看| 国产伦精品一区二区三区高清版| 99视频精品免费观看| 国产精品美女诱惑| 99久久久精品免费观看国产| 九色91在线视频| 日韩久久精品一区二区三区| 亚洲精品一区二| 激情欧美丁香| 可以看av的网站久久看| 国产麻豆乱码精品一区二区三区| 久久国产精品久久| 亚洲第一导航| 含羞草久久爱69一区| 噜噜爱69成人精品| 久久久久久久久久久久久9999| 水蜜桃亚洲一二三四在线| 欧美日韩爆操| 亚洲在线成人| 老牛影视免费一区二区| 欧美精品色网| 99精品国产高清一区二区| 久久偷看各类wc女厕嘘嘘偷窃 | 国产一区日韩欧美| 久久三级福利| 欧美日韩一区在线视频| 国产精品观看| 国产精品久久精品国产 | 欧美另类综合| 久久av一区二区| 久久精彩视频| 黑人一区二区三区四区五区| 校园激情久久| 伊人情人网综合| 91超碰在线电影| 一区二区三区三区在线| 麻豆9191精品国产| 亚洲人久久久| 99在线国产| 欧美日韩一区二区视频在线 | 黑人中文字幕一区二区三区| 欧美一区网站| 福利精品视频| 黄色成人91| 六月婷婷久久| 国产模特精品视频久久久久| 欧美日韩精品综合| 欧美中文字幕| 精品96久久久久久中文字幕无| 国产欧美韩日| 亚洲欧洲另类| 五月天色一区| 国产精品对白一区二区三区| 国内成人在线| 日本在线观看一区| 91久久爱成人| 亚洲精品欧洲| 午夜精品一区二区三区四区| 国产区二精品视| 国产亚洲欧美一区二区 | 免费看亚洲片| 欧美日韩在线精品一区二区三区| 成人一区二区在线| 99国产精品久久久久久久成人热| 你懂的网址一区二区三区| 久久天堂成人| 国产亚洲一区在线| 激情久久一区| 欧美精品一区在线| 日韩高清在线播放| 精品在线一区| 国产精品久久波多野结衣| 午夜在线一区二区| 亚洲午夜精品国产| 欧美日韩高清在线一区| 少妇特黄a一区二区三区| 精品久久久久久亚洲| 国产chinese精品一区二区| 国产精品久久久一区二区三区 | 91福利视频导航| 国产一区二区高清不卡| 在线日本成人| 999亚洲国产精| 最新成人av网站| 一本久道久久综合狠狠爱| 亚洲午夜精品久久久久久浪潮| 亚洲一区三区电影在线观看| 欧洲精品码一区二区三区免费看| 国产精品欧美久久| 精品久久精品久久| 久草热久草热线频97精品| 激情久久av| 国产日韩精品一区观看| 久久视频一区| 国产高清一区视频| 精品一区二区三区自拍图片区| 国产精品永久入口久久久| 国内精品视频在线播放| 国产精品一区二区三区不卡| 成人黄动漫网站免费| 激情小说网站亚洲综合网| 国产亚洲欧美一区二区| 精品国产乱码久久久久| 快播亚洲色图| 欧美在线资源| 亚洲国产精品第一区二区| 亚洲精品韩国| 久久综合狠狠综合久久综青草| 91超碰在线电影| 欧美lavv| 欧美精品18| 国产精品久久久对白| 成人自拍偷拍| 欧美日韩国产免费一区二区三区| 欧洲一区二区在线| 午夜日韩在线| 亚洲在线一区| 免费国产一区二区| 亚洲一级网站| 福利视频一区二区三区| 蜜桃欧美视频|