请问V5版本mysql连接会走协程吗

happy321

V5版本 redis 和 http 已经走协程了
请问mysql协程版会开发吗??

假如mysql协程版开发出来了,
是不是workerman处理http请求的时候就可以直接开协程来处理请求啦??

1063 3 3
3个回答

tanhongbin

现在 http请求已经可以用协程了,我都用上了,效果杠杠的

walkor

workerman官方预计不会出协程版MySQL客户端。原因如下:

PHP实现MySQL客户端性能差
PHP层面实现MySQL客户端需要使用PHP解析MySQL协议,PHP解析协议过程中相比PDO会消耗更多的CPU,导致整体性能不如直接使用阻塞PDO

PHP MySQL连接池缺陷
为了发挥协程优势需要使用MySQL连接池。而PHP是多进程单线程的,多进程间无法复用MYSQL连接池,需要每个进程开启MYSQL连接池。例如64个进程,每个进程开启一个10个连接的MySQL连接池,一台服务器的总连接数可能达到640个,很容易把MySQL连接数占满。这种连接池机制会导致系统扩展性很差。

MySQL连接数越多,性能越差
连接池机制会导致有更多的空闲连接,而MySQL连接数越多,性能越差,即使其中大部分是空闲连接。这就导致很多使用了MySQL连接池的应用性能不如直接用PDO阻塞调用的原因。

引入协程会让应用变得复杂
引入协程会导致应用开发变得复杂,需要时刻考虑上下文问题,一些组件需要改造才能使用,例如数据库组件。webman一直体长简单、稳定、高性能。引入PHP实现的MySQL协程后性能肯定不会提高,简单和稳定性也受到挑战。

第三方协程客户端
预计会有第三方开发出基于fiber的MySQL协程客户端,到时候应该可以直接在webman中使用。
对于MySQL协程情有独钟的可以在webman中开启swoole驱动,开启后可以使用swoole的协程,注意使用swoole协程后就无法使用laravel以及thinkphp的orm,因为他们是不支持协程的。

  • lcmg 2023-07-07

    那如果开启swoole驱动,orm和redis要使用什么包那

  • 不败少龙 2023-07-07

    那就去用swoole的Hyperf

  • walkor 2023-07-07

    对,喜欢协程的可以用Hyperf

  • happy321 2023-07-07

    谢谢讲解!! 请问这个协程除了redis 和 http 以后还会添加其他应用吗?

  • walkor 2023-07-07

    还有一个延迟 Timer::sleep();

  • happy321 2023-07-07

    老大太热心了 谢谢👍

nitron

协程好不好?那肯定好啊!

协程是不是解决一切问题的灵丹妙药?那肯定不是!

  • 暂无评论
🔝