日韩在线观看-日韩在线成人-日韩在线不卡视频-日韩在线不卡视频-国产精品99-国产精品99

Csp 并發模式

使用 子協程(go) + 通道(channel) 實現 Csp 并發模式并發執行。

當我們需要并發執行某些不相干的請求,并得到結果的時候,例如:

$sql1->exec();
$sql2->exec();
$sql2->exec();

在以上的代碼中,我們沒辦法最大的節約時間,因為 sql 語句都是順序執行的,因此我們引入了 Csp 并發編程的概念。

示例代碼

<?php
go(function () {
    $channel = new \Swoole\Coroutine\Channel();
    go(function () use ($channel) {
        // 模擬執行sql
        \co::sleep(0.1);
        $channel->push(1);
    });
    go(function () use ($channel) {
        // 模擬執行sql
        \co::sleep(0.1);
        $channel->push(2);
    });
    go(function () use ($channel) {
        // 模擬執行sql
        \co::sleep(0.1);
        $channel->push(3);
    });

    $i = 3;
    while ($i--) {
        var_dump($channel->pop());
    }
});

當然,在以上的代碼中,我們沒有充分地考慮超時等情況

進一步封裝

<?php
go(function () {
    $csp = new \EasySwoole\Component\Csp();
    $csp->add('t1', function () {
        \co::sleep(0.1);
        return 't1 result';
    });
    $csp->add('t2', function () {
        \co::sleep(0.1);
        return 't2 result';
    });

    var_dump($csp->exec());
});

exec 方法提供了一個默認參數:超時時間(默認為 5s),當調用 $csp->exec() 后,最長等待 5s 左右會返回結果。如果你在 t2 函數中 co::sleep(6),那么 5s 后,返回的數據中不會包含 t2 函數的返回數據。

主站蜘蛛池模板: 郭京飞个人资料简介| stylistic device| 四 电影| 性裸体视频| 安装暖气片电话| 李保田最经典十部电影| 长谷川清| 我不知道明天的道路歌词歌谱| 心奇爆龙战车5之机甲战陀 2021| 艳妇乳肉豪妇荡乳xxx| 电影《波丽露》免费观看| 董明珠:简历 个人资料| 大奉打更人电视剧免费在线观看| 徐贤电影| 验光单子的数据怎么看| justin harris| 成龙版杨家将电影免费播放| 探究事物的本质的读后感想| 电影白洁少妇完整版| 曾生| cgtn news在线直播| 魔法少女加奈| 库存管理软件| 对会长的忠告未增减| 初一英语完形填空20篇免费| 大树君| 跳墙| 卡特琳娜·格兰厄姆| 裂缝 电影| 国家征收土地多少钱一亩| 新红楼梦电视剧| 2001年日历全年表| 真实游戏电影无删减完整版| 王李| 护花使者歌词| 动物聚会美术图片| 电影英雄| 天下免费大全正版资料| 生日特效动图| 战上海老电影战争片子| silk铃木一彻|