午夜免费_欧美一级免费看_欧美日韩一区二区视频在线观看_午夜视频在线_日本特黄a级高清免费大片_成年人黄色小视频

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 函数的返回数据。

主站蜘蛛池模板: 99热在线观看精品 | 日本网站在线 | 免费看一区二区三区 | 91精品久久久久久久久中文字幕 | 午夜 国产 | 在线观看的毛片 | 国产成人午夜精品影院游乐网 | 亚洲天堂一| 亚洲一区二区三区四区五区中文 | 91传媒在线观看 | 国产一区二区三区观看 | 91官网在线观看 | 91av电影在线观看 | 91免费高清视频 | 国产成人免费在线视频 | 91夜夜蜜桃臀一区二区三区 | 亚洲视频免费在线看 | 懂色av噜噜一区二区三区av88 | 国产成人精品亚洲男人的天堂 | 91高清在线观看 | 成人av中文解说水果派在线观看 | 亚洲精品国偷自产在线91正片 | 国产成人精品亚洲男人的天堂 | 91伦理视频在线观看 | 91成人入口 | 91精品国产色综合久久不卡蜜臀 | 91精品在线免费视频 | 91国内外精品自在线播放 | 91精品在线观看入口 | 久久久久国产欧美 | 99色热| 欧美日韩精品一区二区 | 91社区在线观看播放 | 中文字幕一区二区三天 | 97超碰在线播放 | 91黄视频| 午夜 国产 | 91精品中文字幕一区二区三区 | 国产精品夜夜春夜夜爽久久小 | 一级作爱视频免费观看 | 男人网站视频 |