fix: make subscribe url cofig changes take effect immediately under octane

This commit is contained in:
xboard
2025-07-22 03:25:13 +08:00
parent cd5f444b24
commit 7adfd160cc
+3 -10
View File
@@ -125,26 +125,19 @@ class Helper
{ {
$path = route('client.subscribe', ['token' => $token], false); $path = route('client.subscribe', ['token' => $token], false);
// 如果已提供订阅URL,直接处理并返回
if ($subscribeUrl) { if ($subscribeUrl) {
$finalUrl = rtrim($subscribeUrl, '/') . $path; $finalUrl = rtrim($subscribeUrl, '/') . $path;
return HookManager::filter('subscribe.url', $finalUrl); return HookManager::filter('subscribe.url', $finalUrl);
} }
// 使用静态缓存避免重复查询配置
if (self::$subscribeUrlCache === null) {
$urlString = (string)admin_setting('subscribe_url', ''); $urlString = (string)admin_setting('subscribe_url', '');
self::$subscribeUrlCache = $urlString ? explode(',', $urlString) : []; $subscribeUrlList = $urlString ? explode(',', $urlString) : [];
}
// 如果没有配置订阅URL,使用默认URL if (empty($subscribeUrlList)) {
if (empty(self::$subscribeUrlCache)) {
return HookManager::filter('subscribe.url', url($path)); return HookManager::filter('subscribe.url', url($path));
} }
// 高效随机选择URL并处理 $selectedUrl = self::replaceByPattern(Arr::random($subscribeUrlList));
$randomIndex = array_rand(self::$subscribeUrlCache);
$selectedUrl = self::replaceByPattern(self::$subscribeUrlCache[$randomIndex]);
$finalUrl = rtrim($selectedUrl, '/') . $path; $finalUrl = rtrim($selectedUrl, '/') . $path;
return HookManager::filter('subscribe.url', $finalUrl); return HookManager::filter('subscribe.url', $finalUrl);