开启协程后 查询2000条数据 速度是快了好多哦

macho
public function test(Request $request)
    {
        $channel = new Channel(10);
        $wg = new WaitGroup();
        //循环使用
        for ($i = 0; $i < 10; $i++){
            $wg->add();
            Coroutine::create(function () use($i,$wg,$channel) {
                $on_line_log_data = OnlineLog::listData('',[],200);//模拟耗时操作
                $channel->push(['index' => $i,'data' => $on_line_log_data],2);
                $wg->done();
            });
        }
        $wg->wait();
        $data = [];

        $length = $channel->length();

        for($i=0;$i<$length;$i++){
            $data[] = $channel->pop(1);
        }

        return successMsg();
    }
182 2 1
2个评论

ybbhui90

咋在项目里实际使用?

six

你这代码写的太啰嗦了,其实这样就行了

<?php
namespace app\controller;

use Workerman\Coroutine\Parallel;
use xxx\OnlineLog;

class IndexController
{
    public function index()
    {
        $parallel = new Parallel();
        for ($i = 0; $i < 10; $i++){
            $parallel->add(function () {
                return OnlineLog::listData('',[],200);
            });
        }
        return json($parallel->wait());
    }
}
  • macho 2天前

    厉害 厉害 是的 寻思多测几个属性。

macho

100
积分
0
获赞数
0
粉丝数
2021-12-03 加入
×
🔝