中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

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 函數的返回數據。

主站蜘蛛池模板: 欧美成人精品一区二区男人看 | 久久精品中文字幕 | a久久| 免费成人av网站 | 91国内精品久久 | 91精品国产综合久久久久久漫画 | 免费观看黄色大片 | 中文字幕观看 | 日韩成人在线视频 | 狠狠躁夜夜躁人人爽天天高潮 | 国产精品久久久久久久久久久久久 | 色花av| 日韩在线免费 | 久久精品一区二区 | 国产精品成人一区二区三区夜夜夜 | 午夜精品一区 | 一区二区视频在线观看 | 黄色片网站 | 在线国产日韩 | 狠狠干2024 | 欧美日韩中文字幕在线 | 亚洲国产成人精品久久久国产成人一区 | 欧美精品在线视频 | 91黄视频 | 岛国免费 | 国产一区二区在线免费观看 | 精久久久| 亚洲精品系列 | 亚洲精品乱码8久久久久久日本 | 亚洲免费视频一区 | 久久综合九色综合欧美狠狠 | 日韩在线小视频 | 精品在线视频播放 | 久久久久久久久久久久久久av | 亚洲精品免费看 | 免费黄色在线观看 | 日韩高清一区 | 国内精品视频 | 亚洲精品一级 | 日韩电影网站 | 亚洲淫视频 |