Skip to content

Commit 73b8bdc

Browse files
committed
[修改]1. 修改回存的实现
1 parent 6e577c1 commit 73b8bdc

File tree

1 file changed

+18
-37
lines changed

1 file changed

+18
-37
lines changed

GameFrameX.Core/Timer/GlobalTimer.cs

Lines changed: 18 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using GameFrameX.DataBase;
44
using GameFrameX.Utility.Extensions;
55
using GameFrameX.Foundation.Logger;
6+
using GameFrameX.Utility;
67
using GameFrameX.Utility.Setting;
78

89
namespace GameFrameX.Core.Timer;
@@ -39,67 +40,47 @@ public static void Start()
3940
private static async Task Loop()
4041
{
4142
var nextSaveTime = NextSaveTime();
42-
var saveInterval = TimeSpan.FromMilliseconds(GlobalSettings.SaveIntervalInMilliSeconds);
43-
var onceDelay = TimeSpan.FromMilliseconds(200);
43+
var onceDelay = TimeSpan.FromSeconds(5);
4444

4545
while (IsWorking)
4646
{
47-
LogHelper.Debug($"下次定时回存时间 {nextSaveTime}");
48-
49-
while (DateTime.Now < nextSaveTime && IsWorking)
47+
LogHelper.Info($"下次定时回存时间 {nextSaveTime}");
48+
var currentTime = TimeHelper.UnixTimeMilliseconds();
49+
while (currentTime < nextSaveTime && IsWorking)
5050
{
5151
await Task.Delay(onceDelay);
52+
currentTime = TimeHelper.UnixTimeMilliseconds();
5253
}
5354

5455
if (!IsWorking)
5556
{
5657
break;
5758
}
5859

59-
var startTime = DateTime.Now;
60-
60+
var startTime = TimeHelper.UnixTimeMilliseconds();
61+
LogHelper.Info($"开始定时回存 时间:{startTime}");
6162
await StateComponent.TimerSave();
62-
63-
var cost = (DateTime.Now - startTime).TotalMilliseconds;
64-
LogHelper.Debug($"定时回存完成 耗时: {cost:f4}ms");
65-
63+
var endTime = TimeHelper.UnixTimeMilliseconds();
64+
var cost = endTime - startTime;
65+
LogHelper.Info($"结束定时回存 时间:{endTime} 耗时: {cost}ms");
66+
LogHelper.Info($"开始回收空闲Actor 时间:{startTime}");
6667
await ActorManager.CheckIdle();
67-
68+
currentTime = TimeHelper.UnixTimeMilliseconds();
69+
LogHelper.Info($"结束回收空闲Actor 时间:{currentTime}");
6870
do
6971
{
70-
nextSaveTime = nextSaveTime.Add(saveInterval);
71-
} while (DateTime.Now > nextSaveTime);
72+
nextSaveTime = NextSaveTime();
73+
} while (currentTime > nextSaveTime);
7274
}
7375
}
7476

7577
/// <summary>
7678
/// 计算下次回存时间
7779
/// </summary>
7880
/// <returns>下次回存时间</returns>
79-
private static DateTime NextSaveTime()
81+
private static long NextSaveTime()
8082
{
81-
var now = DateTime.Now;
82-
var t = now.Date.AddHours(now.Hour);
83-
84-
while (t < now)
85-
{
86-
t = t.AddMilliseconds(GlobalSettings.SaveIntervalInMilliSeconds);
87-
}
88-
89-
var serverId = GlobalSettings.ServerId;
90-
var a = serverId % 1000;
91-
var b = a % GlobalConst.MAGIC;
92-
var c = GlobalSettings.SaveIntervalInMilliSeconds / GlobalConst.MAGIC;
93-
var r = GameFrameX.Utility.RandomHelper.Next(0, c);
94-
var delay = b * c + r;
95-
t = t.AddMilliseconds(delay);
96-
97-
if ((t - now).TotalMilliseconds > GlobalSettings.SaveIntervalInMilliSeconds)
98-
{
99-
t = t.AddMilliseconds(-GlobalSettings.SaveIntervalInMilliSeconds);
100-
}
101-
102-
return t;
83+
return TimeHelper.UnixTimeMilliseconds() + GlobalSettings.SaveIntervalInMilliSeconds;
10384
}
10485

10586
/// <summary>

0 commit comments

Comments
 (0)