如何显示未读的子论坛?

时间:2010-02-17 21:34:09

标签: php database-design postgresql forums

我使用PostgreSQL在PHP中编写了一个简单的论坛。该论坛由许多包含主题的子论坛(或类别,如果您愿意)组成。我有一个表存储用户上次访问主题的时间。它是这样的: user_id,topic_id,时间戳。

通过比较上次主题回复的时间戳与上次用户访问的时间戳,我可以轻松确定哪些主题应标记为未读。

我的问题是:如何有效确定哪些子论坛(类别)应标记为未读?我想出的就是:每次用户访问某个主题时,都要更新访问时间戳并检查当前子论坛中的所有主题是读取还是未读取。如果它们都被读取,则将子论坛标记为对用户读取。否则,将其标记为未读。但我认为必须有另一种方式。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

有许多方法(比如你的)可以实现类似的行为,因为你提到效率我会考虑性能很重要。

之前处理此问题的方式并未涉及数据库来处理未读内容。考虑到这一点,我的建议是:

  1. 在第一次访问时,标记的主题仅比“未读”更新,比如3天,
  2. 当用户浏览主题时,开始将主题ID和LastUpdate线程放入客户端的cookie中
  3. 加载论坛页面时,检查cookie以及线程是否遭受任何更新,可以使用纯javascript 轻松完成此代码以及cookie处理。
  4. 如果客户离网站一整周,没问题,他会看到比3天(第一次访问规则)更新的所有内容都是未读的。
  5. p.s。:这与一个人知道自己没有阅读的内容有多重要。在我的建议中,这不是至关重要的,因为它不是100%可靠(毕竟我们没有使用数据库/适当的持久性)