From 30d30bb8c6ef4ebe054487090e6ae4751f6d4de1 Mon Sep 17 00:00:00 2001 From: ayflying Date: Fri, 22 Aug 2025 12:04:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=94=AF=E4=B8=80=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E7=9A=84=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/logic/systemCron/systemCron.go | 13 ++++++++++--- pkg/aycache/cache.go | 3 ++- service/ip_2_region.go | 3 --- service/system_cron.go | 3 ++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/internal/logic/systemCron/systemCron.go b/internal/logic/systemCron/systemCron.go index 0cf5b9c..9cf2c14 100644 --- a/internal/logic/systemCron/systemCron.go +++ b/internal/logic/systemCron/systemCron.go @@ -2,6 +2,9 @@ package systemCron import ( "context" + "sync" + "time" + "github.com/ayflying/utility_go/api/system/v1" "github.com/ayflying/utility_go/service" "github.com/gogf/gf/v2/frame/g" @@ -9,8 +12,6 @@ import ( "github.com/gogf/gf/v2/os/gctx" "github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/os/gtimer" - "sync" - "time" ) var ( @@ -89,7 +90,13 @@ func (s *sSystemCron) AddCron(typ v1.CronType, _func func() error) { // @receiver s: sSystemCron的实例,代表一个调度系统。 // @param typ: 任务的类型,决定该任务将被添加到哪个列表中。对应不同的时间间隔。 // @param _func: 要添加的任务函数,该函数执行时应该返回一个error。 -func (s *sSystemCron) AddCronV2(typ v1.CronType, _func func(context.Context) error) { +// @param unique: 是否只在唯一服务器上执行 +func (s *sSystemCron) AddCronV2(typ v1.CronType, _func func(context.Context) error, unique ...bool) { + //如果 + if g.Cfg().MustGet(gctx.New(), "game.cron_close").Bool() { + return + } + //加锁 s.Lock.Lock() defer s.Lock.Unlock() diff --git a/pkg/aycache/cache.go b/pkg/aycache/cache.go index 65405a0..25f7ceb 100644 --- a/pkg/aycache/cache.go +++ b/pkg/aycache/cache.go @@ -1,6 +1,7 @@ package aycache import ( + "context" "math" v1 "github.com/ayflying/utility_go/api/system/v1" @@ -33,7 +34,7 @@ var QPS = promauto.NewGauge( func init() { boot.AddFunc(func() { // 初始化指标,每分钟计算一次平均 QPS 并重置计数器 - service.SystemCron().AddCron(v1.CronType_MINUTE, func() error { + service.SystemCron().AddCronV2(v1.CronType_MINUTE, func(context.Context) error { QPS.Set(math.Round(float64(QPSCount) / 60)) QPSCount = 0 return nil diff --git a/service/ip_2_region.go b/service/ip_2_region.go index 99dc649..31b2260 100644 --- a/service/ip_2_region.go +++ b/service/ip_2_region.go @@ -7,9 +7,6 @@ package service type ( IIp2Region interface { - // Load 加载到内存中 - // - // @Description: 加载ip2region数据库到内存中。 // @receiver s *sIp2region: sIp2region的实例。 Load() GetIp(ip string) (res []string) diff --git a/service/system_cron.go b/service/system_cron.go index ca3a3fd..fdb1046 100644 --- a/service/system_cron.go +++ b/service/system_cron.go @@ -38,7 +38,8 @@ type ( // @receiver s: sSystemCron的实例,代表一个调度系统。 // @param typ: 任务的类型,决定该任务将被添加到哪个列表中。对应不同的时间间隔。 // @param _func: 要添加的任务函数,该函数执行时应该返回一个error。 - AddCronV2(typ v1.CronType, _func func(context.Context) error) + // @param unique: 是否只在唯一服务器上执行 + AddCronV2(typ v1.CronType, _func func(context.Context) error, unique ...bool) // StartCron 开始计划任务执行 // // @Description: