【问题标题】:Saving last SQL query state in PHP在 PHP 中保存最后一个 SQL 查询状态
【发布时间】:2012-10-25 08:24:38
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 那么你的问题是什么?您需要每 30-60 秒从数据库中输出一次值吗?
  • @Eritrea 第一次是;在第一次之后,只有上次查询后添加/更新的差异数据。
  • 当您将数据插入 SQL 时,请确保您也包含时间,然后如果您想输出数据,只需执行查询以按时间返回值(这意味着,显示数据库中最后提交的数据)

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      相关资源
      最近更新 更多