From 17ad88608bcdffde394a0ab529d3299e0bc28d95 Mon Sep 17 00:00:00 2001 From: ASUS <515617283@qq.com> Date: Wed, 13 Aug 2025 16:27:39 +0800 Subject: [PATCH] add --- .../library}/DatabaseRoute.php | 39 +- app/controller/IndexController.php | 9 +- app/model/Test.php | 4 +- composer.json | 3 +- composer.lock | 44 +- config/process.php | 2 +- config/think-cache.php | 39 + config/think-orm.php | 1134 ++++++++++++++++- 8 files changed, 1206 insertions(+), 68 deletions(-) rename app/{model => common/library}/DatabaseRoute.php (93%) create mode 100644 config/think-cache.php diff --git a/app/model/DatabaseRoute.php b/app/common/library/DatabaseRoute.php similarity index 93% rename from app/model/DatabaseRoute.php rename to app/common/library/DatabaseRoute.php index 74ae322..ecc64b5 100644 --- a/app/model/DatabaseRoute.php +++ b/app/common/library/DatabaseRoute.php @@ -1,13 +1,12 @@ table = $table; $this->builder = $builder; - $this->dbMap = config('database.db_map'); - $this->masterDbMap = config('database.db_master_map'); + $this->dbMap = config('think-orm.db_map'); + $this->masterDbMap = config('think-orm.db_master_map'); } public function __call($method, $args) @@ -473,12 +472,12 @@ class DatabaseRoute private static function getIndex() { - $INDEX = \cache('db_index'); + $INDEX = cache('db_index'); if ($INDEX == null) { $INDEX = 0; } $INDEX = ++$INDEX % 4; - \cache('db_index', $INDEX); + cache('db_index', $INDEX); return $INDEX; } @@ -492,7 +491,12 @@ class DatabaseRoute */ public static function getConnection($table, $data = [], $isWrite = false) { + + $routeConfig = config('think-orm.route'); + if (!isset($routeConfig[$table])) { + return $isWrite ? 'duanju-master' : 'duanju-slave'; + } $keyField = strpos($table, 'user') !== false || in_array($table, [ 'orders', 'course_collect', 'pay_details', 'disc_spinning_record', 'cash_out', 'course_user', 'tb_user', 'task_center_record', @@ -502,7 +506,7 @@ class DatabaseRoute if (!isset($data[$keyField])) { Log::warning("分库警告: 表={$table}, 数据中缺少 {$keyField} 字段"); - return $isWrite ? 'duanju_master' : 'duanju_slave'; + return $isWrite ? 'duanju-master' : 'duanju-slave'; } $index = abs($data[$keyField] % 5); @@ -511,6 +515,19 @@ class DatabaseRoute : $routeConfig[$table]['slave']; $connectionName = str_replace("{\${$keyField}%5}", $index, $connectionTemplate); + + if (strpos($connectionName, 'slave')) { + $INDEX = self::getIndex(); + $connectionName = str_replace("duanju", 'duanju'.$INDEX, $connectionName); + } + // 验证连接是否存在 + $connections = config('think-orm.connections'); + if (!isset($connections[$connectionName])) { + Log::error("分库错误: 表={$table}, 连接={$connectionName} 不存在"); + return $isWrite ? 'duanju-master' : 'duanju-slave'; + } + +// Log::info("分库成功: 表={$table}, 键={$keyField}, 值={$data[$keyField]}, 索引={$index}, 连接={$connectionName}"); return $connectionName; } } \ No newline at end of file diff --git a/app/controller/IndexController.php b/app/controller/IndexController.php index 04b61b4..0c0e82d 100644 --- a/app/controller/IndexController.php +++ b/app/controller/IndexController.php @@ -5,18 +5,16 @@ namespace app\controller; use app\api\model\CourseCollect; use app\api\model\CourseDetails; use app\api\model\TbUser; -use app\model\DatabaseRoute; +use app\common\library\DatabaseRoute; use app\model\Test; use support\Request; use think\facade\Db; -use think\facade\Log; class IndexController { public function index(Request $request) { - - + \support\Log::info('来了' . date('Y-m-d H:i:s')); $get['courseId'] = $course_id = '1877654905222135809'; $user['user_id'] = $user_id = '14240'; $user = DatabaseRoute::getDb('tb_user', $user_id)->find(); @@ -132,6 +130,7 @@ class IndexController $detailsId = $det_db->name('course_user')->where(['course_id' => $courseId, 'classify' => 2])->column('course_details_id'); $det_db->close(); $detailsId = array_flip(array_flip($detailsId)); // 去重 + \support\Log::info('啦啦啦' . date('Y-m-d H:i:s')); } // 处理剧集列表 $current = null; @@ -162,7 +161,6 @@ class IndexController ->where('classify', 2) ->limit(1) ->count(); - $isGood_db->close(); $s['isGood'] = empty($isGood) || $isGood == 0 ? 0 : 1; } } @@ -184,6 +182,7 @@ class IndexController 'collect' => empty($collect) || $collect == 0 ? 0 : 1, 'list' => $courseDetailsSetVos ]; + \support\Log::info('即将返回' . date('Y-m-d H:i:s')); return json($map); } catch (\Exception $e) { return json($e->getMessage()); diff --git a/app/model/Test.php b/app/model/Test.php index 130d151..2ab8458 100644 --- a/app/model/Test.php +++ b/app/model/Test.php @@ -2,8 +2,10 @@ namespace app\model; +use support\Log; use think\model; use think\facade\Db; +use app\common\library\DatabaseRoute; class Test extends Model { @@ -51,7 +53,7 @@ class Test extends Model }else{ $isExpire = true; } - + Log::info('嘿嘿' . date('Y-m-d H:i:s')); return !$isExpire; } diff --git a/composer.json b/composer.json index 2a784a9..6fac653 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,8 @@ "workerman/webman-framework": "^2.1", "monolog/monolog": "^2.0", "webman/think-orm": "^2.1", - "vlucas/phpdotenv": "^5.6" + "vlucas/phpdotenv": "^5.6", + "webman/think-cache": "^2.1" }, "suggest": { "ext-event": "For better performance. " diff --git a/composer.lock b/composer.lock index 441e512..d8dbd95 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "31b009f9f2392b9eda909c76dbca259f", + "content-hash": "c2aa9244f1a0947409551191f357b155", "packages": [ { "name": "graham-campbell/result-type", @@ -1059,6 +1059,48 @@ ], "time": "2024-07-20T21:52:34+00:00" }, + { + "name": "webman/think-cache", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/webman-php/think-cache.git", + "reference": "807d86942850d5755bf296967abbae48f3b7e176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webman-php/think-cache/zipball/807d86942850d5755bf296967abbae48f3b7e176", + "reference": "807d86942850d5755bf296967abbae48f3b7e176", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "psr/simple-cache": "^1.0|^2.0|^3.0", + "topthink/think-container": "^2.0|^3.0", + "workerman/webman-framework": "^2.1 || dev-master" + }, + "type": "library", + "autoload": { + "psr-4": { + "support\\": "src/support", + "Webman\\ThinkCache\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/webman-php/think-cache/issues", + "source": "https://github.com/webman-php/think-cache/tree/v2.1.1" + }, + "time": "2025-03-18T06:08:37+00:00" + }, { "name": "webman/think-orm", "version": "v2.1.6", diff --git a/config/process.php b/config/process.php index 27fdfcb..892dc82 100644 --- a/config/process.php +++ b/config/process.php @@ -26,7 +26,7 @@ return [ 'user' => '', 'group' => '', 'reusePort' => false, - 'eventLoop' => \Workerman\Events\Swoole::class, + 'eventLoop' => '', 'context' => [], 'constructor' => [ 'requestClass' => Request::class, diff --git a/config/think-cache.php b/config/think-cache.php new file mode 100644 index 0000000..27b570a --- /dev/null +++ b/config/think-cache.php @@ -0,0 +1,39 @@ + 'redis', + // 缓存连接方式配置 + 'stores' => [ + // redis缓存 + 'redis' => [ + // 驱动方式 + 'type' => 'redis', + // 服务器地址 + 'host' => '127.0.0.1', + // 缓存前缀 + 'prefix' => 'cache:', + 'password' => '222222', + // 默认缓存有效期 0表示永久缓存 + 'expire' => 0, + // Thinkphp官方没有这个参数,由于生成的tag键默认不过期,如果tag键数量很大,避免长时间占用内存,可以设置一个超过其他缓存的过期时间,0为不设置 + 'tag_expire' => 86400 * 30, + // 缓存标签前缀 + 'tag_prefix' => 'tag:', + // 连接池配置 + 'pool' => [ + 'max_connections' => 5, // 最大连接数 + 'min_connections' => 1, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + // 文件缓存 + 'file' => [ + // 驱动方式 + 'type' => 'file', + // 设置不同的缓存保存目录 + 'path' => runtime_path() . '/file/', + ], + ], +]; \ No newline at end of file diff --git a/config/think-orm.php b/config/think-orm.php index 0514e30..bb175f0 100644 --- a/config/think-orm.php +++ b/config/think-orm.php @@ -7,7 +7,7 @@ return [ // 数据库类型 'type' => 'mysql', // 服务器地址 - 'hostname' => env('HOSTNAME', '127.0.0.1'), + 'hostname' => env('HOSTNAME', 'rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com'), // 数据库名 'database' => 'duanju', // 数据库用户名 @@ -38,17 +38,194 @@ return [ 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 ], ], + 'duanju-0_master' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('HOSTNAME', 'rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com'), + // 数据库名 + 'database' => 'duanju-0', + // 数据库用户名 + 'username' => env('USERNAME', 'video_user'), + // 数据库密码 + 'password' => env('PASSWORD', 'VideoUser@1'), + // 数据库连接端口 + 'hostport' => env('HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju-1_master' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('HOSTNAME', 'rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com'), + // 数据库名 + 'database' => 'duanju-1', + // 数据库用户名 + 'username' => env('USERNAME', 'video_user'), + // 数据库密码 + 'password' => env('PASSWORD', 'VideoUser@1'), + // 数据库连接端口 + 'hostport' => env('HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + + 'duanju-2_master' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('HOSTNAME', 'rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com'), + // 数据库名 + 'database' => 'duanju-2', + // 数据库用户名 + 'username' => env('USERNAME', 'video_user'), + // 数据库密码 + 'password' => env('PASSWORD', 'VideoUser@1'), + // 数据库连接端口 + 'hostport' => env('HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju-3_master' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('HOSTNAME', 'rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com'), + // 数据库名 + 'database' => 'duanju-3', + // 数据库用户名 + 'username' => env('USERNAME', 'video_user'), + // 数据库密码 + 'password' => env('PASSWORD', 'VideoUser@1'), + // 数据库连接端口 + 'hostport' => env('HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju-4_master' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('HOSTNAME', 'rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com'), + // 数据库名 + 'database' => 'duanju-4', + // 数据库用户名 + 'username' => env('USERNAME', 'video_user'), + // 数据库密码 + 'password' => env('PASSWORD', 'VideoUser@1'), + // 数据库连接端口 + 'hostport' => env('HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju_slave' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 - 'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'), + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), // 数据库名 'database' => 'duanju', // 数据库用户名 - 'username' => env('SLAVE_USERNAME', 'video_user'), + 'username' => env('SLAVE_USERNAME', 'root'), // 数据库密码 - 'password' => env('SLAVE_PASSWORD', 'VideoUser@1'), + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), // 数据库连接端口 'hostport' => env('SLAVE_HOSTPORT', '3306'), // 数据库连接参数 @@ -73,17 +250,21 @@ return [ 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 ], ], - 'duanju_slave_0' => [ + + + + + 'duanju-0_slave' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 - 'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'), + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), // 数据库名 'database' => 'duanju-0', // 数据库用户名 - 'username' => env('SLAVE_USERNAME', 'video_user'), + 'username' => env('SLAVE_USERNAME', 'root'), // 数据库密码 - 'password' => env('SLAVE_PASSWORD', 'VideoUser@1'), + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), // 数据库连接端口 'hostport' => env('SLAVE_HOSTPORT', '3306'), // 数据库连接参数 @@ -109,17 +290,17 @@ return [ ], ], - 'duanju_slave_1' => [ + 'duanju-1_slave' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 - 'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'), + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), // 数据库名 'database' => 'duanju-1', // 数据库用户名 - 'username' => env('SLAVE_USERNAME', 'video_user'), + 'username' => env('SLAVE_USERNAME', 'root'), // 数据库密码 - 'password' => env('SLAVE_PASSWORD', 'VideoUser@1'), + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), // 数据库连接端口 'hostport' => env('SLAVE_HOSTPORT', '3306'), // 数据库连接参数 @@ -145,17 +326,17 @@ return [ ], ], - 'duanju_slave_2' => [ + 'duanju-2_slave' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 - 'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'), + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), // 数据库名 'database' => 'duanju-2', // 数据库用户名 - 'username' => env('SLAVE_USERNAME', 'video_user'), + 'username' => env('SLAVE_USERNAME', 'root'), // 数据库密码 - 'password' => env('SLAVE_PASSWORD', 'VideoUser@1'), + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), // 数据库连接端口 'hostport' => env('SLAVE_HOSTPORT', '3306'), // 数据库连接参数 @@ -180,17 +361,18 @@ return [ 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 ], ], - 'duanju_slave_3' => [ + + 'duanju-3_slave' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 - 'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'), + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), // 数据库名 'database' => 'duanju-3', // 数据库用户名 - 'username' => env('SLAVE_USERNAME', 'video_user'), + 'username' => env('SLAVE_USERNAME', 'root'), // 数据库密码 - 'password' => env('SLAVE_PASSWORD', 'VideoUser@1'), + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), // 数据库连接端口 'hostport' => env('SLAVE_HOSTPORT', '3306'), // 数据库连接参数 @@ -215,17 +397,17 @@ return [ 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 ], ], - 'duanju_slave_4' => [ + 'duanju-4_slave' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 - 'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'), + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), // 数据库名 'database' => 'duanju-4', // 数据库用户名 - 'username' => env('SLAVE_USERNAME', 'video_user'), + 'username' => env('SLAVE_USERNAME', 'root'), // 数据库密码 - 'password' => env('SLAVE_PASSWORD', 'VideoUser@1'), + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), // 数据库连接端口 'hostport' => env('SLAVE_HOSTPORT', '3306'), // 数据库连接参数 @@ -250,35 +432,891 @@ return [ 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 ], ], + 'duanju0_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), + // 数据库名 + 'database' => 'duanju', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju0-0_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), + // 数据库名 + 'database' => 'duanju-0', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju0-1_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), + // 数据库名 + 'database' => 'duanju-1', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju0-2_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), + // 数据库名 + 'database' => 'duanju-2', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju0-3_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), + // 数据库名 + 'database' => 'duanju-3', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju0-4_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.8'), + // 数据库名 + 'database' => 'duanju-4', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju1_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.9'), + // 数据库名 + 'database' => 'duanju', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju1-0_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.9'), + // 数据库名 + 'database' => 'duanju-0', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju1-1_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.9'), + // 数据库名 + 'database' => 'duanju-1', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju1-2_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.9'), + // 数据库名 + 'database' => 'duanju-2', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju1-3_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.9'), + // 数据库名 + 'database' => 'duanju-3', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju1-4_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.9'), + // 数据库名 + 'database' => 'duanju-4', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoUser1@'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju2_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.11'), + // 数据库名 + 'database' => 'duanju', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju2-0_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.11'), + // 数据库名 + 'database' => 'duanju-0', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju2-1_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.11'), + // 数据库名 + 'database' => 'duanju-1', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju2-2_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.11'), + // 数据库名 + 'database' => 'duanju-2', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju2-3_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.11'), + // 数据库名 + 'database' => 'duanju-3', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju2-4_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.11'), + // 数据库名 + 'database' => 'duanju-4', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + + 'duanju3_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.10'), + // 数据库名 + 'database' => 'duanju', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + + 'duanju3-0_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.10'), + // 数据库名 + 'database' => 'duanju-0', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + + 'duanju3-1_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.10'), + // 数据库名 + 'database' => 'duanju-1', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju3-2_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.10'), + // 数据库名 + 'database' => 'duanju-2', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + + 'duanju3-3_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.10'), + // 数据库名 + 'database' => 'duanju-3', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + 'duanju3-4_slave' => [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 + 'hostname' => env('SLAVE_HOSTNAME', '172.18.96.10'), + // 数据库名 + 'database' => 'duanju-4', + // 数据库用户名 + 'username' => env('SLAVE_USERNAME', 'root'), + // 数据库密码 + 'password' => env('SLAVE_PASSWORD', 'VideoServer'), + // 数据库连接端口 + 'hostport' => env('SLAVE_HOSTPORT', '3306'), + // 数据库连接参数 + 'params' => [ + // 连接超时3秒 + \PDO::ATTR_TIMEOUT => 3, + ], + // 数据库编码默认采用utf8 + 'charset' => 'utf8mb4', + // 数据库表前缀 + 'prefix' => '', + // 断线重连 + 'break_reconnect' => true, + // 自定义分页类 + 'bootstrap' => '', + // 连接池配置 + 'pool' => [ + 'max_connections' => 500, // 最大连接数 + 'min_connections' => 20, // 最小连接数 + 'wait_timeout' => 3, // 从连接池获取连接等待超时时间 + 'idle_timeout' => 60, // 连接最大空闲时间,超过该时间会被回收 + 'heartbeat_interval' => 50, // 心跳检测间隔,需要小于60秒 + ], + ], + ], - 'db_map' => [ - 'duanju_slave', 'duanju_slave_0', 'duanju_slave_1', 'duanju_slave_2', 'duanju_slave_3', 'duanju_slave_4', - ], - // 从主库 - 'search_library' => 'duanju_slave', - 'z_library' => 'duanju_master', - // 主主库 // 数据库路由配置 'route' => [ // user_id分库的表 - 'user_money_details' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'sys_user_money_details' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'orders' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'course_collect' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'pay_details' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'disc_spinning_record' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'cash_out' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'course_user' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'tb_user' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'task_center_record' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'user_money' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'user_sign_record' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'invite_achievement' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'invite_money' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'user_info' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], - 'sys_user' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$user_id%5}'], + 'user_money_details' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'sys_user_money_details' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'orders' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'course_collect' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'pay_details' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'disc_spinning_record' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'cash_out' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'course_user' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'tb_user' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'task_center_record' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'user_money' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'user_sign_record' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'invite_achievement' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'invite_money' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'user_info' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], + 'sys_user' => ['master' => 'duanju-{$user_id%5}_master', 'slave' => 'duanju-{$user_id%5}_slave'], // course_id分库的表 - 'course_details' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$course_id%5}'], + 'course_details' => ['master' => 'duanju-{$course_id%5}_master', 'slave' => 'duanju-{$course_id%5}_slave'], ], + + 'db_map' => [ + 'duanju_slave', 'duanju-0_slave', 'duanju-1_slave', 'duanju-2_slave', 'duanju-3_slave', 'duanju-4_slave', + 'duanju0_slave', 'duanju0-0_slave', 'duanju0-1_slave', 'duanju0-2_slave', 'duanju0-3_slave', 'duanju0-4_slave', + 'duanju1_slave', 'duanju1-0_slave', 'duanju1-1_slave', 'duanju1-2_slave', 'duanju1-3_slave', 'duanju1-4_slave', + 'duanju2_slave', 'duanju2-0_slave', 'duanju2-1_slave', 'duanju2-2_slave', 'duanju2-3_slave', 'duanju2-4_slave', + 'duanju3_slave', 'duanju3-0_slave', 'duanju3-1_slave', 'duanju3-2_slave', 'duanju3-3_slave', 'duanju3-4_slave', + ], + 'db_master_map' => [ + 'duanju_master', 'duanju-0_master', 'duanju-1_master', 'duanju-2_master', 'duanju-3_master', 'duanju-4_master' + ], + // 从主库 + 'search_library' => 'duanju_slave', + // 主主库 + 'z_library' => 'duanju_master', + + // 需要过滤的从主库 + 'unset_db_map' => ['duanju_slave', 'duanju0_slave', 'duanju1_slave', 'duanju2_slave', 'duanju3_slave'] ];