结构介绍:
最近在写游戏中社交相关的逻辑处理。整体思路架构如下:
当玩家登录游戏,去数据库中查找有没有玩家的信息,如果有,那么就取出来,放在内存中,如果没有,就新建一个玩家信息。
当玩家登出游戏的时候,把玩家的信息从内存中写入数据库中
现场日记:
今天在做单元测试的时候,发现一个bug,当玩家第一次登录游戏,然后登出之后,玩家的信息竟然没有存到数据库里。
当玩家第二次登录的时候,再登出游戏,竟然存到数据库里了。
分析过程:
在知晓这个bug之后,仔细打印从玩家登录到登出过程中运行的每一个函数。经过一翻查找,发现玩家在登出游戏的时候,玩家的信息
往数据库里存储的时候报错,并且错误被劫持。
紧接着,开始打印错误日志,发现当玩家的信息往数据库里面写入的时候,有一个信息从内存中读取失败。
然后分析这个信息,发现了之前思维的一个漏洞:
之前的想法是当玩家第一次登录的时候,先校验用户名和密码,如果不存在用户,那么就会新建一个。这时候,应该接着新建一个初始
的玩家信息,但是之前没有执行这一步。所以导致玩家的信息一直都没有,自然就写不入数据库里。
时间: 2024-10-25 03:07:48