我正在开发这款名为“堡垒”的游戏,位于http://www.joemajewski.com/fortress。无论如何,它是基于浏览器的角色扮演游戏之一,玩家可以在其中建立一支军队并升级他们的统计数据以在排行榜上获得高排名。
每 30 分钟就会执行一个 cron 作业,这会进行一些更新。它循环遍历游戏的每个玩家(随着更多人加入,随着时间的推移自然会继续上升),并更新某些统计数据。它给每个人额外的一回合,根据他们的收入、食物、木材、铜、铁等给他们金币,而且它会更新他们的排名。
我知道,这都是胡说八道,但重点是每个玩家都有自己的更新查询。我只用三个成员为脚本计时:
mysql_query() 函数的执行时间为更新注释掉:~ 3.5 ms
mysql_query() 函数正常工作的执行时间:~ 14 ms
很明显,一旦游戏拥有 100 多个注册会员,更新查询将导致我的 cron 工作变得非常缓慢。我希望在游戏发布后的两周内有 100 名活跃玩家,但许多玩家创建了多个帐户,所以我预计几周后至少会有 200 名会员。有 200 个更新查询,加上对成员进行排序和计算排名的额外时间,运行 cron 作业可能需要 2 秒以上。
我问你的问题。有没有更快的方法来做这样的事情?我尝试分别在循环之前和之后添加“START TRANSACTION”和“COMMIT”查询,但很难用 3 个成员来衡量速度。事务会使脚本变得更好还是更糟?有没有其他办法解决这个问题?任何帮助,将不胜感激。
非常感谢您花时间听取我的请求。