在审查的同时phpBB 的相关架构 https://github.com/phpbb/phpbb3/blob/develop/phpBB/install/schemas/mysql_41_schema.sql#L819,我发现了以下内容:
# Table: 'phpbb_topics_track'
CREATE TABLE phpbb_topics_track (
user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
topic_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
mark_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
PRIMARY KEY (user_id, topic_id),
KEY topic_id (topic_id),
KEY forum_id (forum_id)
) CHARACTER SET `utf8` COLLATE `utf8_bin`;
And:
# Table: 'phpbb_forums_track'
CREATE TABLE phpbb_forums_track (
user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
mark_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
PRIMARY KEY (user_id, forum_id)
) CHARACTER SET `utf8` COLLATE `utf8_bin`;
Then I 在他们的 wiki 中查看 http://wiki.phpbb.com/Table.phpbb_topics_track:
该表保存访问过的主题的记录,以便将它们标记为
已读或未读。我们结合使用 mark_time 时间戳
主题 x 的最后一篇文章的时间戳,以了解主题 x 是否被阅读。
为了准确判断某个主题是否被阅读,还必须
检查 phpbb_forums_track。
因此,本质上他们有一个查找表来存储与用户查看主题(线程)相关的数据,然后对照论坛视图表中的时间戳进行检查,以确定该主题是否已被用户查看。