Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 什么';跨多个项目记住已读/未读状态的最有效方法是什么?_Database_Read Unread - Fatal编程技术网

Database 什么';跨多个项目记住已读/未读状态的最有效方法是什么?

Database 什么';跨多个项目记住已读/未读状态的最有效方法是什么?,database,read-unread,Database,Read Unread,例如,让我们以论坛的形式为例,我们有多个用户和多个线程。假设这个论坛想要跟踪哪些用户已经阅读了哪些线程,并在查看线程列表时使用这些信息来标记哪些线程尚未阅读 我能想到的唯一解决方案是,每次用户访问线程时,都会将一条记录放入数据库。我想可能会有一个“将所有内容标记为已读”按钮,它可以使用一个时间戳来帮助减少数据库中的扩展。。。无论如何,这不是一个让我印象深刻的解决方案 我有一种感觉,我在这里错过了一些东西。。。也许感恩节早上不是思考编程问题的时候 有没有更好的解决办法?有什么想法吗 在数据库中为每

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

我能想到的唯一解决方案是,每次用户访问线程时,都会将一条记录放入数据库。我想可能会有一个“将所有内容标记为已读”按钮,它可以使用一个时间戳来帮助减少数据库中的扩展。。。无论如何,这不是一个让我印象深刻的解决方案

我有一种感觉,我在这里错过了一些东西。。。也许感恩节早上不是思考编程问题的时候

有没有更好的解决办法?有什么想法吗

  • 在数据库中为每个用户线程组合删除一条记录
  • 或者将此信息存储在一个文件中—每个用户一个文件。如果允许同一用户多次登录,则可能需要锁定/解锁

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

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

    其中有一个包含userid、threadid、last read datetime(将其命名为userAsRead)的表

    然后,它将比较该threadid中的最后一篇文章与上次读取的datetime

    对于标记为all read,它是usertable中的一个字段,使用与上面相同的逻辑

    不要忘记清除userAsRead,如果使用“markasall read”,将节省数据库空间