Какой самый эффективный способ запомнить состояние чтения / непрочитания для нескольких элементов?
Например, давайте возьмем формат форума, где у нас есть несколько пользователей и несколько тем. Скажем, этот форум хочет отследить, какие пользователи прочитали какие темы, и, скажем, использовать эту информацию, чтобы отметить, какие темы непрочитаны при просмотре списка тем.
Единственное решение, которое я могу себе представить, это что-то, что сбрасывает запись в базу данных каждый раз, когда пользователь посещает поток. Я предполагаю, что может быть кнопка "пометить все как прочитанное", которая может использовать временную отметку, чтобы помочь уменьшить разрастание в базе данных… несмотря на то, что это решение не впечатляет меня.
У меня такое ощущение, что я что-то здесь упускаю... может быть, утро в День благодарения не время для размышлений над проблемами программирования.
Есть ли лучшее решение для этого? Есть идеи?
3 ответа
- Удалить запись в базе данных для каждой комбинации пользовательских потоков
- Или храните эту информацию в файле - один файл на пользователя. Может потребоваться блокировка / разблокировка в случае, если разрешено несколько входов одним и тем же пользователем.
Использование записи в базе данных звучит как наиболее перспективное для меня. Он создаст таблицу с миллионами строк очень быстро, если у вас есть активный форум, но это будет самое простое решение для реализации. Это даст большую гибкость в запросах, какие пользователи тоже что-то читают.
Я думаю, что где-то видел, может быть форум phpbb? тем не мение
там была таблица с идентификатором пользователя, threadid, last-read-datetime (пусть это будет userAsRead)
тогда он сравнил бы последнее сообщение, сделанное в этом threadid, с last-read-datetime
для отметки, как все прочитано, это было поле в пользовательской таблице, использующее ту же логику, что и выше
не забудьте очистить userAsRead, если используется "пометить как все прочитанное", сэкономит место в БД