Skip to main content

gva cron

code

package initialize

import (
"fmt"
"github.com/flipped-aurora/gin-vue-admin/server/task"

"github.com/robfig/cron/v3"

"github.com/flipped-aurora/gin-vue-admin/server/global"
)

func Timer() {
go func() {
var option []cron.Option
option = append(option, cron.WithSeconds())
// 清理DB定时任务
_, err := global.GVA_Timer.AddTaskByFunc("ClearDB", "@daily", func() {
err := task.ClearTable(global.GVA_DB) // 定时任务方法定在task文件包中
if err != nil {
fmt.Println("timer error:", err)
}
}, "定时清理数据库【日志,黑名单】内容", option...)
if err != nil {
fmt.Println("add timer error:", err)
}

// 其他定时任务定在这里 参考上方使用方法

//_, err := global.GVA_Timer.AddTaskByFunc("定时任务标识", "corn表达式", func() {
// 具体执行内容...
// ......
//}, option...)
//if err != nil {
// fmt.Println("add timer error:", err)
//}
}()
}

cron 表达式中,@daily 是一个预定义的时间格式。它表示每天的午夜(即 00:00:00)执行一次任务。因此,当你使用 @daily 作为定时任务的时间表达式时,任务将在每天的午夜执行。

详细解释

  • @daily 等价于 0 0 0 * * *,表示每天的 00:00:00。
  • 这个表达式的详细含义是:
    • 秒:0
    • 分:0
    • 时:0
    • 日:*
    • 月:*
    • 星期:*

示例

如果你使用以下代码设置一个任务:

_, err := global.GVA_Timer.AddTaskByFunc("ClearDB", "@daily", func() {
err := task.ClearTable(global.GVA_DB)
if err != nil {
fmt.Println("timer error:", err)
}
}, "定时清理数据库【日志,黑名单】内容", option...)

这个任务会在每天的午夜(00:00:00)执行一次,调用 task.ClearTable(global.GVA_DB) 函数进行数据库清理操作。

其他预定义时间格式

除了 @dailycron 库还支持其他一些预定义的时间格式:

  • @yearly@annually:每年一次,等价于 0 0 0 1 1 *(每年 1 月 1 日的 00:00:00)。
  • @monthly:每月一次,等价于 0 0 0 1 * *(每月 1 日的 00:00:00)。
  • @weekly:每周一次,等价于 0 0 0 * * 0(每周日的 00:00:00)。
  • @daily@midnight:每天一次,等价于 0 0 0 * * *(每天的 00:00:00)。
  • @hourly:每小时一次,等价于 0 0 * * * *(每小时的第 0 分钟)。

你可以根据任务的需求选择合适的预定义格式或自定义 cron 表达式。