需要执行5条查询sql,每条sql执行时间为2s,同步的情况需要10s,有什么方案办法能优化一下吗?
随便写了一个demo
public function test(Request $request)
{
$time = time();
$sqlArr =[
'select sleep(2);',
'select sleep(2);',
'select sleep(2);',
'select sleep(2);',
'select sleep(2);',
];
foreach ($sqlArr as $sql){
Db::select($sql);
}
return json(['code' => 0, 'msg' => 'ok','tt'=>time()-$time]);
}
{
"code": 0,
"msg": "ok",
"tt": 10
}
协程或者异步吧
直接放5个不同队列,直接跑就完了呗 入队可以用管道 瞬间的事
怎么拿执行的结果呢
还要结果呀? 这种协程吧
用swoole的协程吗 workerman 好像没有协程
多条一次执行。
给你两条路:
具体参考:https://www.workerman.net/doc/webman/others/task.html#%E6%96%B0%E5%A2%9EHTTP%E7%AB%AF%E5%8F%A3