位置:首页 > PHP > Hyperf新增数据库连接配置文件修改方法教程

Hyperf新增数据库连接配置文件修改方法教程

时间:2026-08-15  |  作者:星际追番人  |  阅读:0

如果要在 Hyperf 里新增一个数据库连接,入口就在 config/autoload/databases.php

做法并不复杂,直接在 connections 数组中补上一组新的连接配置即可。

但要注意两点:名字得合法,参数也得配全。像 driverhostportdatabaseusernamepasswordcharset 这些基础项,都需要明确写清楚;连接池相关的 pool 参数,则要根据 Swoole 或 Swow 的运行环境来做适配。

配置完成后,重启服务,再通过 Db::connection('name') 去调用这个连接就行。

Hyperf新增数据库连接配置文件修改教程

给 Hyperf 增加数据库连接,关键就在于调整 config/autoload/databases.php 这个文件。

直接在 'connections' 数组里补上一项新的连接配置即可。

这里的配置要写清楚驱动类型、数据库地址、库名、账号、密码等基础参数。另外,连接池相关参数也别忽略,最好结合实际运行环境来做适配,比如 Swow 或 Swoole。

一、在 databases.php 中添加新连接

打开 config/autoload/databases.php,找到 'connections' 数组。

除已有的 'default' 外,可直接追加新连接配置,例如名为 'log_db' 的日志库:

  • 连接名必须是合法的字符串键名(如 'log_db'),不能含空格或特殊符号
  • 每个连接需独立定义 'driver'(如 'mysql''pgsql')、'host''port''database''username''password'
  • 字符集与排序规则建议显式指定:'charset' => 'utf8mb4''collation' => 'utf8mb4_unicode_ci'
  • 若使用环境变量,统一用 env() 包裹,如 env('DB_LOG_HOST', '127.0.0.1'),便于多环境切换

二、正确配置连接池参数

连接池参数决定并发承载能力。

不同协程引擎要求不同,配置时要区分运行环境:

  • 使用 Swoole 时,'pool' 可放在连接配置同级,常用参数包括 min_connectionsmax_connectionswait_timeout
  • 启用 Swow(≥1.5.0)后,必须删除旧 pool 配置,改用 Swow 专用结构:在连接配置内新增 'pool' => [ ... ],且 'check_interval' 不得低于 3000 毫秒
  • 'max_connections' 建议按服务器 CPU 核数 × 8~16 设置,避免超限触发 pool exhausted
  • 修改后务必清空 runtime/container 并重启服务,否则旧连接池实例可能残留

三、运行时切换并验证新连接

新增连接不会自动生效,需在代码中显式调用:

  • Query Builder 方式:Db::connection('log_db')->table('logs')->where('level', 'error')->get()
  • Eloquent 模型中指定:protected $connection = 'log_db';
  • 事务操作也支持:Db::connection('log_db')->transaction(function () { ... });
  • 可通过 Db::connection('log_db')->getPdo() 尝试获取 PDO 实例,快速验证连通性

四、多库共存与读写分离兼容性

多个连接可同时存在,但需注意逻辑隔离:

  • 各连接之间完全独立,事务、连接池、超时设置互不影响
  • 若某库需读写分离(如主从),应在该连接内部配置 'read''write' 子数组,而非跨连接混用
  • 不建议在同一个请求中高频切换大量不同连接,易引发连接数膨胀;高频场景应评估是否需合并库表或引入中间件路由
  • 环境变量命名建议区分,如 DB_LOG_DATABASEDB_REPORT_HOST,避免冲突

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多