From db8ced68070f7c7a0754114fbab4bf3b399e219e Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Wed, 15 Jan 2025 10:36:15 +0800 Subject: [PATCH] feat: add scheduled cleanup tasks for temporary files and old scores in works and beatleader/scoresaber services --- handler/works/clean.go | 32 ++++++++++++++++++++++++++++++++ service/beatleader/hot.go | 9 +++++++++ service/scoresaber/hot.go | 13 +++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 handler/works/clean.go diff --git a/handler/works/clean.go b/handler/works/clean.go new file mode 100644 index 0000000..baaf67b --- /dev/null +++ b/handler/works/clean.go @@ -0,0 +1,32 @@ +package works + +import ( + "log" + "os" + "time" + + "git.lxtend.com/qqbot/util" +) + +func init() { + util.AddCycleTask("cleanTmpFolder", 5*time.Minute, 5*time.Minute, cleanTmpFolder) +} + +func cleanTmpFolder() { + //递归获取./tmp/目录下的所有文件 + files, err := os.ReadDir("./tmp/") + if err != nil { + log.Println(err) + return + } + //删除创建时间超过5分钟的文件 + for _, file := range files { + if file.IsDir() { + continue + } + info, _ := file.Info() + if time.Since(info.ModTime()) > 5*time.Minute { + os.RemoveAll(file.Name()) + } + } +} diff --git a/service/beatleader/hot.go b/service/beatleader/hot.go index c80f19e..d1c4420 100644 --- a/service/beatleader/hot.go +++ b/service/beatleader/hot.go @@ -5,6 +5,7 @@ import ( "time" "git.lxtend.com/qqbot/sqlite3" + "git.lxtend.com/qqbot/util" "github.com/gorilla/websocket" ) @@ -22,6 +23,7 @@ func init() { log.Print("连接 WebSocket 失败:", err) time.Sleep(time.Second) } + util.AddCycleTask("cleanOldScores", 1*time.Hour, 1*time.Hour, cleanOldScores) } func (bm *blScoresManager) connect() error { @@ -76,3 +78,10 @@ func (sm *blScoresManager) GetRecentScores(count int, predict string) []RecordDa return scoresCopy } + +func cleanOldScores() { + db := sqlite3.GetDB() + ssBind := make([]string, 0) + db.Select(&ssBind, "SELECT ssid FROM ssBind") + db.Exec("DELETE FROM blRecordData WHERE generated_time < ? AND ssid NOT IN (?)", time.Now().AddDate(0, 0, -1).Unix(), ssBind) +} diff --git a/service/scoresaber/hot.go b/service/scoresaber/hot.go index 3c07abf..03ec36f 100644 --- a/service/scoresaber/hot.go +++ b/service/scoresaber/hot.go @@ -5,6 +5,7 @@ import ( "time" "git.lxtend.com/qqbot/sqlite3" + "git.lxtend.com/qqbot/util" "github.com/gorilla/websocket" ) @@ -22,6 +23,7 @@ func init() { log.Print("连接 WebSocket 失败:", err) time.Sleep(time.Second) } + util.AddCycleTask("cleanOldScores", 1*time.Hour, 1*time.Hour, cleanOldScores) } func (sm *scoresManager) connect() error { @@ -76,3 +78,14 @@ func (sm *scoresManager) GetRecentScores(count int, predict string) []RecordData return scoresCopy } + +func cleanOldScores() { + //清除>1天前且未绑定ss的记录 + //1.获取所有绑定ss + //2.获取所有>1天前的记录 + //3.删除未绑定ss的记录 + db := sqlite3.GetDB() + ssBind := make([]string, 0) + db.Select(&ssBind, "SELECT ssid FROM ssBind") + db.Exec("DELETE FROM ssRecordData WHERE generated_time < ? AND ssid NOT IN (?)", time.Now().AddDate(0, 0, -1).Unix(), ssBind) +}