1

对于两人游戏,我需要每 30 秒向玩家发送更新数据。

我有一个表(最好是 4 个表),我需要从中选择数据并在用户登录后发送给用户。由于是多人互动游戏,数据需要每30-60秒同步一次。

我的问题是,我有一个非常繁重的查询,每 30-60 秒运行一次。所以理想情况下,我应该在同步期间只向播放器发送更新的和新的行(这也是 iPhone/Android 游戏的前端要求,应用程序在每次同步操作期间都不需要全部数据)。

我经历了MySQL:两个结果集的差异,希望我只能通过 SQL 获得更新/新记录,但问题是,如何保存最后一次查询的结果。

即使我将第一个结果保存在 Session 中(可能不推荐),只要插入或更新新行,该记录也将毫无用处。再次更新会话记录肯定会给服务器带来很大的压力。

有人可以建议实现这一要求的最佳方法吗?没有详细的解决方案,只是一些提示/链接就足够了。

4

2 回答 2

2

你不能给所有的东西加上时间戳吗?

给表中的每一行一个时间戳,称为“last_updated”

在查询中,过滤掉所有带有 last_updated 的条目,该条目在最后一次执行查询之前(或者可能是客户端最后一次调用服务器时获得的最新 last_updated)

于 2012-11-05T13:37:15.603 回答
2

基本上,这并不难。让我为您提供一个步骤计划。

  1. 向您要执行此操作的每个表添加一个日期时间字段
  2. 在您的每个更新查询中,将此字段设置为NOW()
  3. 确保应用程序将上次更新的时间添加到其所有请求中
  4. 让服务器添加更新时间以将结果发送到应用程序(它也发送更新的行)
于 2012-11-05T13:38:44.527 回答