总结游戏服务器定时清空功能的几种实现
2016-12-26 17:25
309 查看
总体思想,对于不重要的数据采用内存临时值即可,不需要存储。对于重要的数据要存储清空时间。
下面只讨论重要的数据。
假设数据需要每天的0点清空
做法一:存储清空的时间(db_clear_time),然后内存计算当前时间是否需要再次清空
这种做法的好处是,计算简单。缺点是 假设服务器0点左右发生宕机现在,那么重启之后也是不会清空的,因为有hour==0的判断条件。那要是不要这个hour == 0的判断条件的话,就变成了每隔一天一清空,感觉离要求更远了一些。
方法二:存储下一次的清空时间(db_next_clear_time),这里给出一个计算清空时间的方法
这种方案只要时间超过一天就会更新,并且下一次的更新时间还是0点,只是计算函数需要认真写一下。
我曾经写过一个每周四0点清空的逻辑这里也分享一下
下面只讨论重要的数据。
假设数据需要每天的0点清空
做法一:存储清空的时间(db_clear_time),然后内存计算当前时间是否需要再次清空
int now = time(NULL); if(now - db_clear_time > ONE_DAY && hour == 0) { db_clear_time = now; //TODO clear }
这种做法的好处是,计算简单。缺点是 假设服务器0点左右发生宕机现在,那么重启之后也是不会清空的,因为有hour==0的判断条件。那要是不要这个hour == 0的判断条件的话,就变成了每隔一天一清空,感觉离要求更远了一些。
方法二:存储下一次的清空时间(db_next_clear_time),这里给出一个计算清空时间的方法
int GetNextClearTime() { struct tm,tm_now; time_t now = time(NULL); localtime_r(&now,&tm_now); return ((int)now - (tm_now.tm_sec+tm_now.tm_min*60+tm_now.tm_hour*60*60)+24*3600); //计算下一个0点的时间 } int now = time(NULL); if(now > db_next_clear_time) { db_next_clear_time = GetNextClearTime(); //TODO clear }
这种方案只要时间超过一天就会更新,并且下一次的更新时间还是0点,只是计算函数需要认真写一下。
我曾经写过一个每周四0点清空的逻辑这里也分享一下
int GetNextWeekClearTime() { struct tm,tm_now; time_t now = time(NULL); localtime_r(&now,&tm_now); int next_time =((int)now-(tm_now.tm_sec+tm_now.tm_min*60+tm_now.tm_hour*60*60+tm_now.tm_day*24*3600)+4*24*3600); if(next_time <= now) next_time += 7*24*3600; } int now = time(NULL); if(now > next_week_clear_time) { next_week_clear_time = GetNextWeekClearTime(); //TODO clear }
相关文章推荐
- python定时采集摄像头图像上传ftp服务器功能实现
- Android点击Button实现功能的几种方法总结
- 游戏服务器脚本功能总结
- python定时采集摄像头图像上传ftp服务器功能实现
- 基于并发服务器几种实现方法(总结)
- Android点击Button实现功能的几种方法总结
- 功能服务器比拼大擂台――游戏服务器篇
- 如何实现游戏截屏功能
- 实现游戏中的文字滚屏功能
- ASP.NET AJAX (Atlas) 拖放(Drag & Drop)功能6种实现方法总结
- 网络游戏 贸易时代的总结(一)--总体设计和登陆服务器
- Flex2.0实现文件上传功能(服务器为ASP.NET)
- java Web项目中,利用其过滤功能,实现访问者每次访问服务器时,记录访问者的IP,访问时间,Url等信息,并保存到文件的操作
- C#实现SMTP服务器,使用TCP命令实现,功能比较完善
- 企业级服务器设计与实现经验之系统框架(二)--功能/应用服务器主体框架
- 使用Quartz实现定时功能
- 页面定时刷新功能实现
- 企业级服务器设计与实现经验之插件系统--功能插件
- 利用JOB和SQL邮件功能实现对数据库的定时备分
- 用ASP.NET模拟Windows Service来实现定时提醒之类的功能