This commit is contained in:
2025-08-13 14:12:31 +08:00
parent c95616561f
commit 34da927bc9
10 changed files with 2021 additions and 23 deletions

View File

@@ -14,4 +14,5 @@
return [
support\bootstrap\Session::class,
Webman\ThinkOrm\ThinkOrm::class,
];

284
config/think-orm.php Normal file
View File

@@ -0,0 +1,284 @@
<?php
return [
'default' => 'duanju_master',
'connections' => [
'duanju_master' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => env('HOSTNAME', '127.0.0.1'),
// 数据库名
'database' => 'duanju',
// 数据库用户名
'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'),
// 数据库名
'database' => 'duanju',
// 数据库用户名
'username' => env('SLAVE_USERNAME', 'video_user'),
// 数据库密码
'password' => env('SLAVE_PASSWORD', 'VideoUser@1'),
// 数据库连接端口
'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秒
],
],
'duanju_slave_0' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'),
// 数据库名
'database' => 'duanju-0',
// 数据库用户名
'username' => env('SLAVE_USERNAME', 'video_user'),
// 数据库密码
'password' => env('SLAVE_PASSWORD', 'VideoUser@1'),
// 数据库连接端口
'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秒
],
],
'duanju_slave_1' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'),
// 数据库名
'database' => 'duanju-1',
// 数据库用户名
'username' => env('SLAVE_USERNAME', 'video_user'),
// 数据库密码
'password' => env('SLAVE_PASSWORD', 'VideoUser@1'),
// 数据库连接端口
'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秒
],
],
'duanju_slave_2' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'),
// 数据库名
'database' => 'duanju-2',
// 数据库用户名
'username' => env('SLAVE_USERNAME', 'video_user'),
// 数据库密码
'password' => env('SLAVE_PASSWORD', 'VideoUser@1'),
// 数据库连接端口
'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秒
],
],
'duanju_slave_3' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'),
// 数据库名
'database' => 'duanju-3',
// 数据库用户名
'username' => env('SLAVE_USERNAME', 'video_user'),
// 数据库密码
'password' => env('SLAVE_PASSWORD', 'VideoUser@1'),
// 数据库连接端口
'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秒
],
],
'duanju_slave_4' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => env('SLAVE_HOSTNAME', '127.0.0.1'),
// 数据库名
'database' => 'duanju-4',
// 数据库用户名
'username' => env('SLAVE_USERNAME', 'video_user'),
// 数据库密码
'password' => env('SLAVE_PASSWORD', 'VideoUser@1'),
// 数据库连接端口
'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}'],
// course_id分库的表
'course_details' => ['master' => 'duanju_master', 'slave' => 'duanju_slave_{$course_id%5}'],
],
];