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) 函数进行数据库清理操作。
其他预定义时间格式
除了 @daily,cron 库还支持其他一些预定义的时间格式:
@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 表达式。