连接池配置
目录
数据库连接池配置方式已经在连接池里讲过,这里就不重复了,直接说使用方法。
连接池适用于 Swoole 环境
标准写法:
从 imi v1.2.1 版本开始支持
<?php
return [
'db' => [
'defaultPool' => 'alias1', // 默认连接池
'statement' => [
'cache' => true, // 是否开启 Statement 缓存,默认开启
'maxCacheCount' => 0, // Statement 最大缓存数量,默认为 0 则不限制。会根据最后使用时间来决定移除缓存。
],
],
'pools' => [
// 连接池名称
'alias1' => [
'pool' => [
// 协程池类名
'class' => \Imi\Swoole\Db\Pool\CoroutineDbPool::class,
// 同步池类名,一般用不着
// 'class' => \Imi\Db\Pool\SyncDbPool::class,
// 连接池配置
'config' => [
// 池子中最多资源数
// 'maxResources' => 10,
// 池子中最少资源数
// 'minResources' => 2,
// 资源回收时间间隔,单位:秒
// 'gcInterval' => 60,
// 获取资源最大存活时间,单位:秒
// 'maxActiveTime' => 3600,
// 等待资源最大超时时间,单位:毫秒
// 'waitTimeout' => 3000,
// 心跳时间间隔,单位:秒
// 'heartbeatInterval' => null,
// 当获取资源时,是否检查状态
// 'checkStateWhenGetResource' => true,
// 每次获取资源最长使用时间,单位:秒;为 null 则不限制
// 'maxUsedTime' => null,
// 资源创建后最大空闲回收时间,单位:秒;为 null 则不限制
// 'maxIdleTime' => null,
// 当前请求上下文资源检查状态间隔,单位:支持小数的秒;为 null 则不限制
// 'requestResourceCheckInterval' => 30,
// 负载均衡-轮询
// 'resourceConfigMode' => ResourceConfigMode::ROUND_ROBIN,
// 负载均衡-随机
// 'resourceConfigMode' => ResourceConfigMode::RANDOM,
],
],
// 连接池资源配置
'resource' => [
'host' => '127.0.0.1',
'username' => 'root',
'password' => 'root',
'database' => 'database',
'prefix' => '', // 表前缀
// 'port' => '3306',
// 'timeout' => '建立连接超时时间',
// 'charset' => '',
// 使用 hook pdo 驱动(缺省默认)
// 'dbClass' => 'PdoMysqlDriver',
// 使用 hook mysqli 驱动
// 'dbClass' => 'MysqliDriver',
// 使用 Swoole MySQL 驱动
// 'dbClass' => 'SwooleMysqlDriver',
// 数据库连接后,执行初始化的 SQL
// 'initSqls' => [
// 'select 1',
// 'select 2',
// ],
],
// uri 写法
// 'resource' => [
// 'tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60',
// 'tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60',
// ],
// 'resource' => 'tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60;tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60',
],
// 从库配置
// 原连接池名后加.slave即为从库配置,非必设
// 如果配置了,默认查询走从库,增删改走主库
// 如果在事务中,默认都走主库
'alias1.slave' => [
'pool' => [
// 协程池类名
'class' => \Imi\Swoole\Db\Pool\CoroutineDbPool::class,
// 同步池类名,一般用不着
// 'class' => \Imi\Db\Pool\SyncDbPool::class,
// 连接池配置
'config' => [
// 池子中最多资源数
// 'maxResources' => 10,
// 池子中最少资源数
// 'minResources' => 2,
// 资源回收时间间隔,单位:秒
// 'gcInterval' => 60,
// 获取资源最大存活时间,单位:秒
// 'maxActiveTime' => 3600,
// 等待资源最大超时时间,单位:毫秒
// 'waitTimeout' => 3000,
// 心跳时间间隔,单位:秒
// 'heartbeatInterval' => null,
// 当获取资源时,是否检查状态
// 'checkStateWhenGetResource' => true,
// 每次获取资源最长使用时间,单位:秒;为 null 则不限制
// 'maxUsedTime' => null,
// 资源创建后最大空闲回收时间,单位:秒;为 null 则不限制
// 'maxIdleTime' => null,
// 当前请求上下文资源检查状态间隔,单位:支持小数的秒;为 null 则不限制
// 'requestResourceCheckInterval' => 30,
// 负载均衡-轮询
// 'resourceConfigMode' => ResourceConfigMode::ROUND_ROBIN,
// 负载均衡-随机
// 'resourceConfigMode' => ResourceConfigMode::RANDOM,
],
],
// 连接池资源配置
'resource' => [
'host' => '127.0.0.1',
'username' => 'root',
'password' => 'root',
'database' => 'database',
'prefix' => '', // 表前缀
// 'port' => '3306',
// 'timeout' => '建立连接超时时间',
// 'charset' => '',
// 使用 hook pdo 驱动(缺省默认)
// 'dbClass' => 'PdoMysqlDriver',
// 使用 hook mysqli 驱动
// 'dbClass' => 'MysqliDriver',
// 使用 Swoole MySQL 驱动
// 'dbClass' => 'SwooleMysqlDriver',
// 数据库连接后,执行初始化的 SQL
// 'initSqls' => [
// 'select 1',
// 'select 2',
// ],
],
// uri 写法
// 'resource' => [
// 'tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60',
// 'tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60',
// ],
// 'resource' => 'tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60;tcp://192.168.0.222/?username=root&password=root&database=db_test&timeout=60',
]
],
];
单例配置
用于 php-fpm、Workerman 下
<?php
return [
'db' => [
'defaultPool' => 'alias1', // 默认连接名
'statement' => [
'cache' => true, // 是否开启 statement 缓存,默认开启
],
'connections' => [
'alias1' => [
'host' => '127.0.0.1',
'username' => 'root',
'password' => 'root',
'database' => 'database',
'prefix' => '', // 表前缀
// 'port' => '3306',
// 'timeout' => '建立连接超时时间',
// 'charset' => '',
// 使用 hook pdo 驱动(缺省默认)
// 'dbClass' => 'PdoMysqlDriver',
// 使用 hook mysqli 驱动
// 'dbClass' => 'MysqliDriver',
// 使用 Swoole MySQL 驱动
// 'dbClass' => 'SwooleMysqlDriver',
// 数据库连接后,执行初始化的 SQL
// 'initSqls' => [
// 'select 1',
// 'select 2',
// ],
// 当获取资源时,是否检查状态
// 'checkStateWhenGetResource' => true,
// 心跳时间间隔,单位:秒
// 'heartbeatInterval' => null,
],
],
],
];