関連するphpBB のスキーマを確認しているときに、次のことがわかりました。
# 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`;
と:
# 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`;
それから私は彼らのウィキでここを見ます:
このテーブルは、訪問したトピックを既読または未読としてマークするために記録を保持します。トピック x のタイムスタンプの最後の投稿と一緒に mark_time タイムスタンプを使用して、トピック x が読まれたかどうかを確認します。
トピックが既読かどうかを正確に判断するには、phpbb_forums_track もチェックする必要があります。
したがって、基本的に、ユーザーによるトピック (スレッド) の表示に関連付けられたデータを格納するルックアップ テーブルがあり、それをフォーラム ビュー テーブルのタイムスタンプと照合して、トピックがユーザーによって表示されたかどうかを判断します。