首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MySQL中存储在线时间日志的最佳实践

在MySQL中存储在线时间日志的最佳实践
EN

Stack Overflow用户
提问于 2019-03-06 11:32:39
回答 1查看 69关注 0票数 0

TL;DR再往下。

我正在写一个PHP脚本,它使用cURL从游戏站点(如果有人关心的话,胫骨)获取玩家信息,并将其存储在数据库中。

我存储的球员信息包括球员姓名、服务器、级别、职业、登录时间和注销时间。这些信息将被用来制作玩家级别增益,在线时间等的高分列表。

我已经制作了这个脚本的两个原型。第一个检查服务器的在线列表,并在脚本的每个循环中为每个在线播放器创建一个新行。这会创建很多行,数据库大小很快就会变得无法控制,但对这些数据运行mysql查询非常容易。

脚本的另一个版本检查服务器的在线列表,但仅在播放器不在数据库中或自上次脚本循环以来升级后才插入新行。新行是用一个空的"sessionEnd“时间戳列创建的。当脚本的循环通知玩家已经注销时,"sessionEnd“列将填充适当的时间戳。

问题是,为了做到这一点,我必须将数据库中所有未结束的会话行与当前的在线播放器列表(来自网站)进行比较,这会使脚本运行缓慢,并使我的CPU崩溃。这样做的另一个问题是,与其他版本相比,运行与在线时间相关的查询变得复杂,在其他版本中,我可以对X player执行简单的COUNT()操作来获取在线时间。然而,这使数据库的大小变得非常小。

存储用户在线时间的最好方法是什么?

代码语言:javascript
运行
复制
id   username   loginTime   logoutTime     level
1    myuser      10:38         11:54       48
2    myuser      10:54         11:31       49

或者像这样..。

代码语言:javascript
运行
复制
id   username   timestamp   level
1    myuser      10:38       48
2    myuser      10:39       48
3    myuser      10:40       48
4    myuser      10:41       49
EN

回答 1

Stack Overflow用户

发布于 2019-03-06 14:50:29

根据回复,似乎这两种做法都是可行的。

我想我会使用大量存储,cpu友好的路线。这样可以更容易地对数据运行查询,而且我的小笔记本电脑可以在运行脚本的同时进行多任务处理。希望这能帮助到某人

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55015095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档