|
@@ -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 {
|