什么是记住多个项目的读取/未读状态的最有效方法?

时间:2008-11-27 13:23:56

标签: database read-unread

例如,让我们采用论坛的格式,我们有多个用户和多个线程。假设此论坛想要跟踪哪些用户已经阅读了哪些线程,并且说,在查看线程列表时使用该信息来标记哪些线程未读。

我能想象的唯一解决方案是每次用户访问线程时都会将记录丢弃到数据库中。我想可能会有一个'标记全部为读取'按钮,它可以使用时间戳来帮助减少数据库中的蔓延...无论这不是一个让我印象深刻的解决方案。

我有一种感觉,我在这里遗漏了一些东西......也许感恩节的早晨不是思考一个编程问题的时候。

那有更好的解决方案吗?有什么想法吗?

3 个答案:

答案 0 :(得分:2)

使用数据库记录听起来对我来说最有希望。如果你有一个活跃的论坛,它会很快生成一个包含数百万行的表,但这将是最简单的解决方案。它将为查询哪些用户正在阅读内容提供了很大的灵活性。

答案 1 :(得分:1)

  1. 在数据库中删除每个用户线程组合的记录
  2. 或将此信息存储在一个文件中 - 每个用户一个文件。如果允许同一用户进行多次登录,则可能需要锁定/解锁。

答案 2 :(得分:0)

我想我看到了某个地方,也许是phpbb论坛?反正

其中有一个表,其中包含userid,threadid,last-read-datetime(让它命名为userAsRead)

然后它将比较该threadid与last-read-datetime

中的最后一篇文章

对于所有读取的标记,使用与上面相同的逻辑

是usertable中的字段

如果使用“标记为全部读取”,请不要忘记清除userAsRead,这将节省数据库空间