Hyperf 使用 MySQL 协程客户端需安装 ext-pdo、ext-pdo_mysql 和 ext-swoole(≥5.0)或 ext-swow(≥1.4),启用 Swoole 协程并禁用同步 MySQL 函数;推荐 PDO + Swoole\Runtime::enableCoroutine() 方案。

Hyperf 使用 MySQL 协程客户端,不需要额外安装专门的“Hyperf MySQL 扩展”,但必须满足以下底层扩展和配置要求:
✅ 必装 PHP 扩展
-
ext-pdo:PHP 原生 PDO 扩展(Hyperf 的hyperf/database组件底层依赖它) -
ext-pdo_mysql:PDO 对 MySQL 的驱动支持(不是可选,是必须) -
ext-swoole≥ 5.0(推荐)或ext-swow≥ 1.4:提供协程能力,让 PDO 或 MySQLi 能被协程化- 若用 Swoole,需确保
php --ri swoole输出中包含support coroutines => enabled - 同时建议启用
Swoole\Runtime::enableCoroutine()(Hyperf 默认已在启动时调用)
- 若用 Swoole,需确保
⚠️ 注意:不推荐直接用 ext-mysqlnd + 原生 mysql_connect() 等同步函数
- 这些是阻塞调用,会破坏协程模型
- Hyperf 官方已明确不推荐使用旧版
Coroutine\MySQL客户端(已弃用),转而推荐:-
PDO +
Swoole\Runtime::enableCoroutine()(最常用、稳定、兼容性好) - 或 MySQLi + 同样开启协程化
-
PDO +
✅ 验证是否就绪(三步检查)
- 运行
php -m | grep -E "pdo|pdo_mysql|swoole",确认三项都列出 - 运行
php --ri swoole,确认coroutine => enabled - 在代码中尝试协程化连接(例如在
Command或Controller中):\Swoole\Runtime::enableCoroutine(); $pdo = new \PDO('mysql:host=127.0.0.1;dbname=test', 'root', 'pass'); $stmt = $pdo->query('SELECT NOW()'); var_dump($stmt->fetch()); // 应正常返回,且不阻塞其他协程
? 补充说明
-
ext-json、ext-openssl(HTTPS)、ext-bcmath等虽非 MySQL 直接依赖,但常用于生产环境,建议一并启用 - Docker 环境下,推荐直接使用官方
hyperf/hyperf镜像(已预装全部必需扩展)
不复杂但容易忽略。
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。










