PhpBB3 Database Structure Overview phpbb topics track

From PHPBB用户手册

Jump to: navigation, search
CREATE TABLE `phpbb_topics_track` (
 `user_id` mediumint(8) unsigned NOT NULL default '0', 用户ID
 `topic_id` mediumint(8) unsigned NOT NULL default '0', 主题ID
 `forum_id` mediumint(8) unsigned NOT NULL default '0', 主题所在的版面ID
 `mark_time` int(11) unsigned NOT NULL default '0', 标记的时间, 也就是用户阅读这个主题的时间
 PRIMARY KEY  (`user_id`,`topic_id`),
 KEY `forum_id` (`forum_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

这个表, 以及forum_track表, 只在 $config['load_db_lastread'] 为true的时候有用, 这个设置在管理员控制面板(ACP)->负载设置->允许服务器端标记(在数据库中保存已读/未读信息而不是存在cookie上).

在这个设置启用时, 论坛使用数据库而不是cookie来记录用户的阅读/未阅读信息, 在中小型的论坛中, 可以启用数据库记录, 而对于大型的数据库, 建议使用cookie, 因为这样能减轻数据库负载.

在实际的使用中, 大部分track记录会记载在forum_track表中. 只有在这种情况下, topics_track表中才会出现记录:
在版面1中, 用户A有10篇未读文章, 按发表时间最晚到最早依次为a, b, c, d, e, ... 而用户A只查看了除 a 以外的其他文章, 这时候在topics_track中就会记录下被访问的文章信息, 一旦用户A访问了最新的文章a, 那么这些信息会被清空, 而只在forum_track中更新最后的访问时间