65 lines
3.5 KiB
PHP
65 lines
3.5 KiB
PHP
<?php
|
|
|
|
return [
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| 经营分析副本库本机回退配置
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| 标准模式从系统数据库读取完整配置。下面的环境变量只用于隔离排错
|
|
| 或尚未迁移的旧环境;只有显式开启 UPSTREAM_LOCAL_CONFIG_ENABLED
|
|
| 后才会覆盖共享配置。真实端点、账号和密码不得写入 Git。
|
|
|
|
|
*/
|
|
'enabled' => filter_var(env('OPERATIONS_REPLICA_ENABLED', false), FILTER_VALIDATE_BOOL),
|
|
|
|
'allowed_scopes' => array_values(array_filter(array_map(
|
|
'trim',
|
|
explode(',', (string) env('OPERATIONS_REPLICA_ALLOWED_SCOPES', ''))
|
|
))),
|
|
|
|
'connection' => [
|
|
'host' => env('DB_OPERATIONS_REPLICA_HOST'),
|
|
'port' => (int) env('DB_OPERATIONS_REPLICA_PORT', 1433),
|
|
'database' => env('DB_OPERATIONS_REPLICA_DATABASE'),
|
|
'username' => env('DB_OPERATIONS_REPLICA_USERNAME'),
|
|
'password' => env('DB_OPERATIONS_REPLICA_PASSWORD'),
|
|
'odbc_driver' => env(
|
|
'DB_OPERATIONS_REPLICA_ODBC_DRIVER',
|
|
PHP_OS_FAMILY === 'Windows' ? 'ODBC Driver 18 for SQL Server' : 'FreeTDS'
|
|
),
|
|
'tds_version' => env('DB_OPERATIONS_REPLICA_TDS_VERSION', '7.4'),
|
|
// 旧 SQL Server 的可选 TLS 预登录不稳定;仅本地开发默认关闭协商。
|
|
'encryption' => env(
|
|
'DB_OPERATIONS_REPLICA_ENCRYPTION',
|
|
env('APP_ENV', 'production') === 'production' ? 'request' : 'off'
|
|
),
|
|
'connect_timeout' => (int) env('DB_OPERATIONS_REPLICA_CONNECT_TIMEOUT', 5),
|
|
'query_timeout' => (int) env('DB_OPERATIONS_REPLICA_QUERY_TIMEOUT', 15),
|
|
// 仅部分 ODBC 驱动支持该提示;它不是权限控制,默认不强行开启。
|
|
'application_intent' => env('DB_OPERATIONS_REPLICA_APPLICATION_INTENT', ''),
|
|
],
|
|
|
|
'snapshots' => [
|
|
'ttl_seconds' => (int) env('OPERATIONS_REPLICA_SNAPSHOT_TTL', 120),
|
|
'summary_ttl_seconds' => (int) env('OPERATIONS_REPLICA_SUMMARY_TTL', 120),
|
|
'options_ttl_seconds' => (int) env('OPERATIONS_REPLICA_OPTIONS_TTL', 3600),
|
|
'stale_ttl_seconds' => (int) env('OPERATIONS_REPLICA_STALE_TTL', 86400),
|
|
'active_ttl_seconds' => (int) env('OPERATIONS_REPLICA_ACTIVE_QUERY_TTL', 21600),
|
|
'registry_limit' => (int) env('OPERATIONS_REPLICA_ACTIVE_QUERY_LIMIT', 300),
|
|
'refresh_limit' => (int) env('OPERATIONS_REPLICA_REFRESH_LIMIT', 2),
|
|
'miss_budget_per_window' => (int) env('OPERATIONS_REPLICA_MISS_BUDGET', 6),
|
|
'budget_window_seconds' => (int) env('OPERATIONS_REPLICA_BUDGET_WINDOW', 60),
|
|
'lock_seconds' => (int) env('OPERATIONS_REPLICA_LOCK_SECONDS', 45),
|
|
'lock_wait_seconds' => (int) env('OPERATIONS_REPLICA_LOCK_WAIT', 3),
|
|
'max_concurrency' => (int) env('OPERATIONS_REPLICA_MAX_CONCURRENCY', 2),
|
|
'slot_wait_ms' => (int) env('OPERATIONS_REPLICA_SLOT_WAIT_MS', 1500),
|
|
'failure_cooldown_seconds' => (int) env('OPERATIONS_REPLICA_FAILURE_COOLDOWN', 300),
|
|
'query_failure_cooldown_seconds' => (int) env('OPERATIONS_REPLICA_QUERY_FAILURE_COOLDOWN', 300),
|
|
'slow_query_ms' => (int) env('OPERATIONS_REPLICA_SLOW_QUERY_MS', 5000),
|
|
'slow_query_cooldown_seconds' => (int) env('OPERATIONS_REPLICA_SLOW_QUERY_COOLDOWN', 300),
|
|
'refresh_time_budget_seconds' => (int) env('OPERATIONS_REPLICA_REFRESH_TIME_BUDGET', 45),
|
|
'refresh_pause_ms' => (int) env('OPERATIONS_REPLICA_REFRESH_PAUSE_MS', 300),
|
|
],
|
|
];
|