Hyperf 3.1 默认使用 Swoole 协程 MySQL 客户端,需在 config/autoload/databases.php 中配置连接池参数,并确保启用 hyperf/db-connection 包及 Swoole ≥5.0.0。

Hyperf 3.1 默认使用 Swoole 协程 MySQL 客户端,连接池配置需在 config/autoload/databases.php 中完成,Cursor 是代码编辑器(类似 VS Code),它本身不参与运行时配置,但能高效辅助你编写和管理这些配置。关键不是“用 Cursor 写”,而是“在 Cursor 中正确配置 Hyperf 的数据库连接池参数”。
确认 Hyperf 项目已启用协程 MySQL 驱动
Hyperf 3.1 要求 MySQL 连接必须走 swoole_mysql 协程驱动(非 PDO 或 mysqli)。请检查:
-
composer.json 中已安装
hyperf/database和hyperf/db-connection -
config/autoload/packages.php 中确保
Hyperf\DbConnection\Package已启用(默认开启) - 无需手动安装
swoole扩展——Hyperf 3.1 依赖 Swoole 5.0+,请用php --ri swoole确认已启用且版本 ≥5.0.0
在 Cursor 中配置 MySQL 连接池(databases.php)
打开 config/autoload/databases.php,修改 mysql 配置项。Cursor 支持 JSON/PHP 智能提示、错误高亮和快速跳转,可帮你避免拼写错误(如把 pool 写成 poool)。
关键协程连接池字段示例:
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
'mysql' => [
'driver' => env('DB_DRIVER', 'mysql'),
'host' => env('DB_HOST', 'localhost'),
'port' => 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, // 最大连接数(推荐:QPS × 平均耗时 × 2,一般 20–50)
'connect_timeout' => 10.0, // 连接超时(秒)
'wait_timeout' => 3.0, // 获取连接等待超时(秒)
'heartbeat' => -1, // 心跳检测间隔(-1 关闭,>0 启用,单位秒)
'max_idle_time' => 60.0, // 连接最大空闲时间(秒)
],
],
? 提示:在 Cursor 中右键点击数组键名(如 max_connections),可快速查找该配置在 Hyperf 源码中的定义位置,便于理解作用。
验证连接池是否生效
仅靠配置文件写对还不够,需运行时验证。在 Cursor 中新建一个命令类(如 app/Command/CheckPoolCommand.php),用以下逻辑测试:
use Hyperf\Database\Connection;
use Hyperf\Context\ApplicationContext;
<p>$container = ApplicationContext::getContainer();
/*<em> @var Connection $connection </em>/
$connection = $container->get(Connection::class);
// 触发一次查询,强制初始化连接池
$connection->select('SELECT 1');
// 查看当前连接池状态(Hyperf 3.1+ 支持)
$pool = $connection->getPool();
var_dump([
'in_use' => $pool->getInUse(),
'available' => $pool->getAvailable(),
'total' => $pool->getSize(),
]);
</p>
在终端执行 php bin/hyperf.php check:pool,观察输出是否符合预期(例如 in_use 初次为 1,available 为 max_connections - 1)。
常见问题与 Cursor 辅助技巧
-
环境变量未加载? Cursor 中打开 .env 文件,确认
DB_HOST、DB_PORT等值正确,且无多余空格或引号 -
连接超时或拒绝? 在 Cursor 中按
Ctrl+Click(macOSCmd+Click)跳转到Connection类,查看createPdoResolver方法,确认驱动实际使用的是Swoole\Coroutine\MySQL -
想动态调优连接池? Cursor 支持多光标编辑:选中多个
max_connections值,同时修改不同环境的配置(dev/staging/prod) -
忘记重启服务? 修改配置后,务必在终端执行
php bin/hyperf.php start— Cursor 不会自动重启进程










