From 0aed3e5e6a131485a4b6195e788f2f1cb6fd9de2 Mon Sep 17 00:00:00 2001 From: truthhun <1272881215@qq.com> Date: Thu, 19 Oct 2023 14:39:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/init.go | 11 +++++++---- model/util.go | 27 ++++++++++++++------------- service/serve.go | 1 + 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/model/init.go b/model/init.go index 0bddbf1..552a8cf 100644 --- a/model/init.go +++ b/model/init.go @@ -145,10 +145,6 @@ func NewDBModel(cfg *conf.Database, lg *zap.Logger) (m *DBModel, err error) { } m.tableFieldsMap[table] = filedsMap } - go m.loopCovertDocument() - go m.cronUpdateSitemap() - go m.cronMarkAttachmentDeleted() - go m.cronCleanInvalidAttachment() return } @@ -194,6 +190,13 @@ func (m *DBModel) SyncDB() (err error) { return } +func (m *DBModel) RunTasks() { + go m.loopCovertDocument() + go m.cronUpdateSitemap() + go m.cronMarkAttachmentDeleted() + go m.cronCleanInvalidAttachment() +} + func (m *DBModel) GetDB() *gorm.DB { return m.db } diff --git a/model/util.go b/model/util.go index 77cc46c..4d8610f 100644 --- a/model/util.go +++ b/model/util.go @@ -166,15 +166,15 @@ func (m *DBModel) cronUpdateSitemap() { for { hour, _ := strconv.Atoi(os.Getenv("MOREDOC_UPDATE_SITEMAP_HOUR")) // 默认为每天凌晨0点更新站点地图 hour = hour % 24 - m.logger.Info("cronUpdateSitemap", zap.Int("hour", hour), zap.String("lastUpdated", lastUpdated)) + m.logger.Debug("cronUpdateSitemap", zap.Int("hour", hour), zap.String("lastUpdated", lastUpdated)) now := time.Now() if now.Hour() == hour && now.Format(layout) != lastUpdated { - m.logger.Info("cronUpdateSitemap,start...") + m.logger.Debug("cronUpdateSitemap,start...") err := m.UpdateSitemap() if err != nil { - m.logger.Info("cronUpdateSitemap,end...", zap.Error(err)) + m.logger.Debug("cronUpdateSitemap,end...", zap.Error(err)) } - m.logger.Info("cronUpdateSitemap,end...") + m.logger.Debug("cronUpdateSitemap,end...") lastUpdated = now.Format(layout) } time.Sleep(1 * time.Minute) @@ -190,7 +190,7 @@ func (m *DBModel) cronCleanInvalidAttachment() { sleepDuration := 1 * time.Minute for { time.Sleep(1 * time.Second) - m.logger.Info("cronCleanInvalidAttachment,start...") + m.logger.Debug("cronCleanInvalidAttachment,start...") var ( deletedAttachemnts, attachemnts []Attachment hashes []string @@ -206,7 +206,7 @@ func (m *DBModel) cronCleanInvalidAttachment() { // 1. 找出已被标记删除的附件 m.db.Unscoped().Where("deleted_at IS NOT NULL").Where("deleted_at < ?", time.Now().Add(-time.Duration(retentionMinute)*time.Minute)).Limit(100).Find(&deletedAttachemnts) if len(deletedAttachemnts) == 0 { - m.logger.Info("cronCleanInvalidAttachment,end...") + m.logger.Debug("cronCleanInvalidAttachment,end...") time.Sleep(sleepDuration) continue } @@ -226,10 +226,10 @@ func (m *DBModel) cronCleanInvalidAttachment() { err := m.db.Unscoped().Where("id IN (?)", ids).Delete(&Attachment{}).Error if err != nil { m.logger.Error("cronCleanInvalidAttachment", zap.Error(err)) - m.logger.Info("cronCleanInvalidAttachment,end...") + m.logger.Debug("cronCleanInvalidAttachment,end...") continue } - m.logger.Info("cronCleanInvalidAttachment", zap.Any("ids", ids), zap.Any("Attachemnts", deletedAttachemnts)) + m.logger.Debug("cronCleanInvalidAttachment", zap.Any("ids", ids), zap.Any("Attachemnts", deletedAttachemnts)) for _, attachemnt := range deletedAttachemnts { if _, ok := hashMap[attachemnt.Hash]; !ok { // 删除附件文件 m.logger.Debug("cronCleanInvalidAttachment", zap.String("path", attachemnt.Path), zap.Any("attachemnt", attachemnt)) @@ -247,7 +247,7 @@ func (m *DBModel) cronCleanInvalidAttachment() { } } } - m.logger.Info("cronCleanInvalidAttachment,end...") + m.logger.Debug("cronCleanInvalidAttachment,end...") } } @@ -294,12 +294,12 @@ func (m *DBModel) cronMarkAttachmentDeleted() { } // 非配置类和横幅类附件,如果type_id为0,则表示未被使用,超过24小时则标记删除 - m.logger.Info("cronMarkAttachmentDeleted start...") + m.logger.Debug("cronMarkAttachmentDeleted start...") err := m.db.Where("`type` not in (?) and type_id = ?", []int{AttachmentTypeConfig, AttachmentTypeBanner}, 0).Where("created_at < ?", time.Now().Add(-time.Duration(24)*time.Hour)).Delete(&Attachment{}).Error if err != nil { m.logger.Error("cronMarkAttachmentDeleted", zap.Error(err)) } - m.logger.Info("cronMarkAttachmentDeleted end...") + m.logger.Debug("cronMarkAttachmentDeleted end...") } } @@ -314,11 +314,12 @@ func (m *DBModel) loopCovertDocument() { m.db.Model(&Document{}).Where("status = ?", DocumentStatusConverting).Update("status", DocumentStatusPending) for { now := time.Now() - m.logger.Info("loopCovertDocument,start...") + m.logger.Debug("loopCovertDocument,start...") err := m.ConvertDocument() if err != nil && err != gorm.ErrRecordNotFound { - m.logger.Info("loopCovertDocument,end...", zap.Error(err), zap.String("cost", time.Since(now).String())) + m.logger.Error("loopCovertDocument", zap.Error(err)) } + m.logger.Debug("loopCovertDocument,end...", zap.String("cost", time.Since(now).String())) if err == gorm.ErrRecordNotFound { time.Sleep(sleep) } diff --git a/service/serve.go b/service/serve.go index 4679d04..75e8da8 100644 --- a/service/serve.go +++ b/service/serve.go @@ -60,6 +60,7 @@ func Run(cfg *conf.Config, logger *zap.Logger) { // 每次启动时,都对dist中的title进行一次处理,以替换掉关键字 moredoc go dbModel.InitSEO() + dbModel.RunTasks() if cfg.Level != "debug" { gin.SetMode(gin.ReleaseMode)