瀏覽代碼

增加方法

wangchuanjin 2 年之前
父節點
當前提交
0e023bb71e
共有 1 個文件被更改,包括 19 次插入2 次删除
  1. 19 2
      p/timetask.go

+ 19 - 2
p/timetask.go

@@ -132,9 +132,26 @@ func (t *timeTask) Month() (int64, int64) {
 }
 
 //执行每小时任务
-func (t *timeTask) RunEveryHour(duration int64, f func()) {
+func (t *timeTask) RunEveryHour(duration int64, runRightNow bool, f func()) {
+	if runRightNow {
+		go f()
+	}
+	now := time.Now()
+	nextHour := time.Date(now.Year(), now.Month(), now.Day(), now.Hour()+1, 0, 0, 0, time.Local)
+	ticker := time.NewTicker(nextHour.Sub(now))
+	for {
+		select {
+		case <-ticker.C:
+			go f()
+			ticker.Reset(time.Hour)
+		}
+	}
+}
+
+//执行每小时任务,每个小时中再跑n次任务
+func (t *timeTask) RunSpitHour(duration int64, runRightNow bool, f func()) {
 	now := time.Now()
-	go VarTimeTask.RunInTimeLoop("执行每小时任务", HourFormat(now.Hour()), HourFormat(now.Hour()+1), duration, true, false, nil, f)
+	go VarTimeTask.RunInTimeLoop("执行每小时任务", HourFormat(now.Hour()), HourFormat(now.Hour()+1), duration, runRightNow, false, nil, f)
 	nextHour := time.Date(now.Year(), now.Month(), now.Day(), now.Hour()+1, 0, 0, 0, time.Local)
 	ticker := time.NewTicker(nextHour.Sub(now))
 	for {