diff --git a/web/controller/inbound.go b/web/controller/inbound.go index 219f121189..8b64fe6eaf 100644 --- a/web/controller/inbound.go +++ b/web/controller/inbound.go @@ -4,8 +4,6 @@ import ( "fmt" "strconv" "x-ui/database/model" - "x-ui/logger" - "x-ui/web/global" "x-ui/web/service" "x-ui/web/session" @@ -20,7 +18,6 @@ type InboundController struct { func NewInboundController(g *gin.RouterGroup) *InboundController { a := &InboundController{} a.initRouter(g) - a.startTask() return a } @@ -42,19 +39,6 @@ func (a *InboundController) initRouter(g *gin.RouterGroup) { g.POST("/delDepletedClients/:id", a.delDepletedClients) } -func (a *InboundController) startTask() { - webServer := global.GetWebServer() - c := webServer.GetCron() - c.AddFunc("@every 10s", func() { - if a.xrayService.IsNeedRestartAndSetFalse() { - err := a.xrayService.RestartXray(false) - if err != nil { - logger.Error("restart xray failed:", err) - } - } - }) -} - func (a *InboundController) getInbounds(c *gin.Context) { user := session.GetLoginUser(c) inbounds, err := a.inboundService.GetInbounds(user.Id) diff --git a/web/web.go b/web/web.go index c3a88b6693..abf2d6c18f 100644 --- a/web/web.go +++ b/web/web.go @@ -241,6 +241,16 @@ func (s *Server) startTask() { // Check whether xray is running every 30 seconds s.cron.AddJob("@every 30s", job.NewCheckXrayRunningJob()) + // Check if xray needs to be restarted + s.cron.AddFunc("@every 10s", func() { + if s.xrayService.IsNeedRestartAndSetFalse() { + err := s.xrayService.RestartXray(false) + if err != nil { + logger.Error("restart xray failed:", err) + } + } + }) + go func() { time.Sleep(time.Second * 5) // Statistics every 10 seconds, start the delay for 5 seconds for the first time, and staggered with the time to restart xray