CaiWuXiTong/config/jiansun.php

66 lines
3.3 KiB
PHP

<?php
return [
/*
|--------------------------------------------------------------------------
| 上游数据库总开关
|--------------------------------------------------------------------------
|
| 默认关闭。只有网络白名单、只读账号和连接驱动全部确认后,才允许在
| 服务器的 runtime/.env 中开启。凭据不得写入本文件或 Git。
|
*/
'enabled' => filter_var(env('JIANSUN_ENABLED', false), FILTER_VALIDATE_BOOL),
// 生产首次启用时从小表范围开始;支持精确 scope、prefix.* 和 *。
'allowed_scopes' => array_values(array_filter(array_map(
'trim',
explode(',', (string) env('JIANSUN_ALLOWED_SCOPES', ''))
))),
'connection' => [
'host' => env('DB_JIANSUN_HOST'),
'port' => (int) env('DB_JIANSUN_PORT', 1433),
'database' => env('DB_JIANSUN_DATABASE'),
'username' => env('DB_JIANSUN_USERNAME'),
'password' => env('DB_JIANSUN_PASSWORD'),
'odbc_driver' => env('DB_JIANSUN_ODBC_DRIVER', 'FreeTDS'),
'tds_version' => env('DB_JIANSUN_TDS_VERSION', '7.4'),
'connect_timeout' => (int) env('DB_JIANSUN_CONNECT_TIMEOUT', 5),
'query_timeout' => (int) env('DB_JIANSUN_QUERY_TIMEOUT', 15),
],
/*
|--------------------------------------------------------------------------
| 活跃查询快照
|--------------------------------------------------------------------------
|
| 页面优先读取持久化在本机 storage 卷中的快照;快照过期后先返回旧值,
| 再由后台刷新。相同数据范围和筛选条件复用同一快照,与账户数量无关。
| 同一查询只允许一个刷新任务,不同查询最多占用少量上游槽位,并受
| 每分钟预算、慢查询冷却和连接失败熔断共同保护。
|
*/
'snapshots' => [
'ttl_seconds' => (int) env('JIANSUN_SNAPSHOT_TTL', 120),
'summary_ttl_seconds' => (int) env('JIANSUN_SUMMARY_TTL', 120),
'options_ttl_seconds' => (int) env('JIANSUN_OPTIONS_TTL', 3600),
'stale_ttl_seconds' => (int) env('JIANSUN_STALE_TTL', 86400),
'active_ttl_seconds' => (int) env('JIANSUN_ACTIVE_QUERY_TTL', 21600),
'registry_limit' => (int) env('JIANSUN_ACTIVE_QUERY_LIMIT', 300),
'refresh_limit' => (int) env('JIANSUN_REFRESH_LIMIT', 2),
'miss_budget_per_window' => (int) env('JIANSUN_MISS_BUDGET', 6),
'budget_window_seconds' => (int) env('JIANSUN_BUDGET_WINDOW', 60),
'lock_seconds' => (int) env('JIANSUN_LOCK_SECONDS', 45),
'lock_wait_seconds' => (int) env('JIANSUN_LOCK_WAIT', 3),
'max_concurrency' => (int) env('JIANSUN_MAX_CONCURRENCY', 2),
'slot_wait_ms' => (int) env('JIANSUN_SLOT_WAIT_MS', 1500),
'failure_cooldown_seconds' => (int) env('JIANSUN_FAILURE_COOLDOWN', 300),
'query_failure_cooldown_seconds' => (int) env('JIANSUN_QUERY_FAILURE_COOLDOWN', 300),
'slow_query_ms' => (int) env('JIANSUN_SLOW_QUERY_MS', 5000),
'slow_query_cooldown_seconds' => (int) env('JIANSUN_SLOW_QUERY_COOLDOWN', 300),
'refresh_time_budget_seconds' => (int) env('JIANSUN_REFRESH_TIME_BUDGET', 45),
'refresh_pause_ms' => (int) env('JIANSUN_REFRESH_PAUSE_MS', 300),
],
];