Hyperf 3.1 MySQL 配置核心是 env() 读取 .env 变量、正确设置协程连接池参数、确保使用 swoole_mysql 协程客户端;需先确认 Swoole ≥5.0.0、安装 hyperf/database 与 db-connection、启用对应 Package。

Hyperf 3.1 的 MySQL 连接配置核心是:用 env() 读取 .env 变量 + 正确设置协程连接池参数 + 确保底层驱动走 swoole_mysql 协程客户端。不是写死值,也不是直接套用 PDO 配置。
确保基础依赖和运行环境已就位
配置前先确认这三件事已满足,否则后续配置无效:
- Swoole 扩展已安装且版本 ≥5.0.0(执行
php --ri swoole查看,需显示support coroutines: enabled) - 项目已安装
hyperf/database和hyperf/db-connection(composer show hyperf/db-connection可查) -
config/autoload/packages.php中Hyperf\DbConnection\Package已启用(默认开启,无需改动)
在 .env 文件中定义数据库变量
不要在 PHP 配置文件里硬编码。在项目根目录的 .env 文件中写入:
DB_DRIVER=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=hyperf_demo DB_USERNAME=root DB_PASSWORD=your_password DB_CHARSET=utf8mb4 DB_COLLATION=utf8mb4_unicode_ci DB_PREFIX=
注意:DB_HOST 推荐用 127.0.0.1 而非 localhost,避免 Unix socket 解析失败或 IPv6 冲突;所有值不加引号(如 DB_PASSWORD="123" 是错的)。
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
修改 config/autoload/databases.php
打开该文件,找到 'mysql' => [ ... ] 配置块,按如下方式填写(关键字段含类型转换和连接池):
'mysql' => [
'driver' => env('DB_DRIVER', 'mysql'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => (int) env('DB_PORT', 3306),
'database' => env('DB_DATABASE', 'hyperf'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
'prefix' => env('DB_PREFIX', ''),
'strict' => true,
'pool' => [
'min_connections' => 1,
'max_connections' => 32,
'connect_timeout' => 10.0,
'wait_timeout' => 3.0,
'heartbeat' => -1,
'max_idle_time' => 60.0,
],
],
其中 max_connections 建议按预估 QPS × 平均查询耗时(秒)× 2 来设,一般 20–50 足够;min_connections 设为 1 可避免冷启动延迟。
验证配置是否生效
改完后必须清缓存并重启服务:
- 执行
rm -rf runtime/container(清除 DI 容器缓存) - 运行
php bin/hyperf.php start - 写个简单命令或接口,用
$connection->select('SELECT VERSION()')测试能否查出结果 - 并发查两个
SLEEP(1),总耗时接近 1 秒而非 2 秒,说明协程连接池真正并发工作
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










