Hyperf 3.1 协程 MySQL 客户端基于 Swoole 原生协程驱动,不依赖 libmysql 或 mysqlnd;必需 Swoole ≥ 5.0 且启用协程支持;pdo_mysql 等扩展仅作非协程降级使用,非生产推荐。

Hyperf 3.1 的协程 MySQL 客户端**不依赖 libmysql,也不强制要求 mysqlnd**,而是基于 Swoole 提供的原生协程 MySQL 驱动(swoole_mysql)实现。
核心事实说明
Hyperf 的 co-pdo 或直接使用 HyperfDatabaseConnection 时,底层走的是 Swoole 内置的协程 MySQL 客户端。这个驱动是纯 C 实现、事件驱动、无阻塞的,与 PHP 的传统 MySQL 扩展(如 mysqlnd 或 libmysql)完全无关。
也就是说:
- 你不需要安装或启用
mysqlnd扩展(即使启用了也用不上); -
pdo_mysql.so或mysqli.so仅在非协程模式下作为降级 fallback 使用(例如调试阶段临时关闭协程),不是生产推荐路径; - 真正必需的是:Swoole ≥ 5.0 且启用协程支持(
php --ri swoole中显示support coroutines: enabled)。
为什么常被误解为“需要 mysqlnd”
部分开发者看到 pdo_mysql 扩展名,误以为必须搭配 mysqlnd;实际上:
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
-
pdo_mysql是 PDO 的 MySQL 驱动,它本身可基于mysqlnd或libmysql编译,但 Hyperf 在协程模式下根本不会加载它; - Hyperf 的协程数据库操作全程绕过 PHP 用户态扩展,直连 Swoole 底层 socket 和协议解析逻辑。
验证方式
运行以下命令确认实际生效的驱动:
php -r "var_dump(class_exists('Swoole\Coroutine\MySQL'));"
返回 bool(true) 即表示协程 MySQL 可用;若为 false,说明 Swoole 版本过低或未正确加载。










