2

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

我能想象的唯一解决方案是每次用户访问线程时将记录放入数据库中。我想可能有一个“全部标记为已读”按钮,它可以使用时间戳来帮助减少数据库中的蔓延……尽管这不是一个让我印象深刻的解决方案。

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

有没有更好的解决方案呢?有任何想法吗?

4

3 回答 3

3

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

于 2008-11-27T13:31:12.740 回答
1
  1. 在数据库中为每个用户线程组合删除一条记录
  2. 或者将此信息存储在一个文件中 - 每个用户一个文件。如果允许同一用户多次登录,可能需要锁定/解锁。
于 2008-11-27T13:28:02.307 回答
0

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

其中有一个表,其中包含用户 ID、线程 ID、上次读取日期时间(将其命名为 userAsRead)

然后它将比较在该线程 ID 中发布的最后一篇文章与 last-read-datetime

对于标记为全部已读,它是用户表中的一个字段,使用与上述相同的逻辑

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

于 2008-11-27T13:34:38.410 回答