Какой самый эффективный способ запомнить состояние чтения / непрочитания для нескольких элементов?

Например, давайте возьмем формат форума, где у нас есть несколько пользователей и несколько тем. Скажем, этот форум хочет отследить, какие пользователи прочитали какие темы, и, скажем, использовать эту информацию, чтобы отметить, какие темы непрочитаны при просмотре списка тем.

Единственное решение, которое я могу себе представить, это что-то, что сбрасывает запись в базу данных каждый раз, когда пользователь посещает поток. Я предполагаю, что может быть кнопка "пометить все как прочитанное", которая может использовать временную отметку, чтобы помочь уменьшить разрастание в базе данных… несмотря на то, что это решение не впечатляет меня.

У меня такое ощущение, что я что-то здесь упускаю... может быть, утро в День благодарения не время для размышлений над проблемами программирования.

Есть ли лучшее решение для этого? Есть идеи?

3 ответа

Решение
  1. Удалить запись в базе данных для каждой комбинации пользовательских потоков
  2. Или храните эту информацию в файле - один файл на пользователя. Может потребоваться блокировка / разблокировка в случае, если разрешено несколько входов одним и тем же пользователем.

Использование записи в базе данных звучит как наиболее перспективное для меня. Он создаст таблицу с миллионами строк очень быстро, если у вас есть активный форум, но это будет самое простое решение для реализации. Это даст большую гибкость в запросах, какие пользователи тоже что-то читают.

Я думаю, что где-то видел, может быть форум phpbb? тем не мение

там была таблица с идентификатором пользователя, threadid, last-read-datetime (пусть это будет userAsRead)

тогда он сравнил бы последнее сообщение, сделанное в этом threadid, с last-read-datetime

для отметки, как все прочитано, это было поле в пользовательской таблице, использующее ту же логику, что и выше

не забудьте очистить userAsRead, если используется "пометить как все прочитанное", сэкономит место в БД

Другие вопросы по тегам