如何退回用户尚未看到的项目/帖子

时间:2014-04-09 13:30:00

标签: php mysql

我们有一个Android应用程序,通过无状态JSON协议与php / MySQL服务器通信。

  • 用户已登录该应用并具有相应的用户ID。
  • 应用程序会根据请求从服务器接收项目/帖子列表。
  • 当用户刷掉列表中的某个项目时,会向服务器发送“响应”消息,并将项目ID添加到 不关心 包含用户ID的表。
  • 现在,要使用新项目替换已删除的项目,很容易忽略 不关心 表中与用户ID匹配的项目;但是,服务器不应返回当前位于用户应用程序中的项目,即列表中尚未删除的项目。

跟踪用户列表中当前项目的最有效方式(就服务器负载而言)是什么?

我想到的一些解决方案:

  1. 发送项目列表后,将所有商品ID放在 user-id 已发送至用户 表中> item-id 列。不幸的是,这意味着每个列表请求都需要写操作。此外,该消息可能无法到达用户?
  2. 对于每条请求消息,该应用程序包含当前位于用户列表中的项目数组。问题是它实际上成为查找逗号分隔列表的问题,该列表是almost as bad as this,需要FIND_IN_SET操作。如果我们有大量的物品,那么这将是一项昂贵的操作。
  3. 目前我倾向于(1)。

    修改 :它归结为我更喜欢选项(2),如果它是一个sargable查询。是否有一种可接受的方式来接收JSON数字数组,并在MySQL IN查询中使用这些数字?

1 个答案:

答案 0 :(得分:0)

您是否可以使用数据库表中的简单标志来管理它?即:第一次向用户发送列表时,将其全部写入表并放置标志=" SENT" (或0,或空白,或某事)。当他挥动一个时,将标志更新为“不要小心”#34; (或1,或某事)。下次发送列表时,只需发送表中尚未发送的内容。这样你就不会发送任何他已经看过的东西了,在桌子上你可以看到他目前列表中的确切内容(它将成为那面旗帜的所有东西)是" SENT",0或空白,无论你选择哪个)