为了账号安全,请及时绑定邮箱和手机立即绑定

协程中使用Swoole\Coroutine\MySQL,数据库操作时没有让出协程,如何解决?

协程中使用Swoole\Coroutine\MySQL,数据库操作时没有让出协程,如何解决?

PHP
小唯快跑啊 2019-03-18 21:16:23
我在做一个小模块,用到了两个协程。一个协程大概的功能就是从队列里取出一些数据,然后根据取到的数据组装成sql,将组装后的sql,压入到协程的chan通道中。另一个协程从通道中取出sql,并执行,执行sql的时候使用 SwooleCoroutineMySQL 库的query。我的设想是 SwooleCoroutineMySQL 在query的时候会占用比较多等待时间,在这个等待mysql响应的时候,把下一个需要组装的数据组装好,装入通道,这样可以减少整体的时间占用。但是结果没有达到我的预期,我的程序还是同步执行,在执行sql的时候,协程并没有让出,而且处于阻塞状态。是我理解的有问题吗?还是有什么我没注意的地方??下面是我代码大致的摘抄,并不是实际运行的代码,仅仅用来表述逻辑。
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

我尝试了 setDefer 机制 ,似乎也没起效。
代码实例如下,还是老样子,这里只是一个demo

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 1820 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信