在PHP中保存最后的SQL查询状态

时间:2012-11-05 13:30:40

标签: php mysql session symfony-1.4 session-state

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

我有一张桌子(理想情况下是4张桌子),我需要选择数据并在用户登录后发送给用户。由于它是多人交互游戏,因此数据需要每30-60秒同步一次。

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

我经历了MySQL: difference of two result sets并希望我只通过SQL获得更新/新记录,但问题是,如何保存上次查询的结果。

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

有人可以建议达到这个要求的最佳方法;没有详细的解决方案,只需要一些提示/链接即可。

2 个答案:

答案 0 :(得分:2)

难道你不能只是为所有东西打上时间戳吗?

为表中的每一行指定一个名为“last_updated”的时间戳

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

答案 1 :(得分:2)

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

  1. 上为要执行此操作的每个表添加日期时间字段
  2. 在每个更新查询中,将此字段设置为NOW()
  3. 确保应用程序将上次更新的时间添加到其所有请求中
  4. 让服务器将更新时间添加到发送给应用程序的结果中(也会发送更新的行)