У меня есть пользовательские форумы обсуждения, которые я закодировал в php / mysql, я хочу знать, как крупные форумы имен могут показать, какие темы имеют в них новые записи, обычно, изменяя изображение значка рядом с потоком, не используя практически никаких ресурсов ?
Самый простой способ – отслеживать, когда кто-то вошел в систему. Когда они возвращаются, все, что было обновлено с тех пор, очевидно, «новое».
У этого есть некоторые проблемы, хотя, поскольку вырубка эффективно отмечает все предметы как прочитанные.
Единственный другой способ, который я мог бы сделать, это поддерживать таблицу, содержащую все потоки и последнюю запись в этом потоке, которые каждый пользователь видел.
user_id thread_id post_id 1 5 15 1 6 19
С этой информацией, если есть сообщение в потоке # 5, у которого есть идентификатор размером более 15, то вы знаете, что там есть непрочитанные сообщения. Обновите эту таблицу только с помощью post_id последнего сообщения на этой странице . Это означает, что если есть 3 страницы новых сообщений, и пользователь просматривает только первый, он все равно будет знать, что есть непрочитанные сообщения.
Как сказал вышеперечисленный nickf, за исключением того, что отслеживаются потоки, которые пользователь посетил. поэтому все, что пользователь не посетил, считается новым для этого посетителя. для более тонкого управления зерном любые нити, созданные до регистрации пользователя, игнорируются и, возможно, любые нити, не посещаемые в течение определенного периода времени, игнорируются. это предотвратит каждую невидимую нить, которая станет для них новой нитью.
Конечно, есть много способов скинуть кошку и в зависимости от того, что создатели форума хотели, чтобы вышеупомянутое могло быть изменено
ОКРУГ КОЛУМБИЯ
Вы могли войти в последний раз, когда они выбрали эту тему, а затем посмотрите, имеет ли пост более позднюю метку времени, а затем их последний «щелчок» по потоку.
Вы можете создать специальную таблицу в своей базе данных с такими столбцами, как USER_ID и THREAD_ID, и с соответствующими ограничениями для ваших таблиц USER и THREAD и первичного ключа, содержащего идентификаторы USER и THREAD.
Теперь, когда кто-то открывает поток, вы просто вставляете эту ПОЛЬЗОВАТЕЛЬ-РЕЗЬБА-ПАРУ в эту специальную таблицу.
В ваших списках потоков вы можете просто просто подключить эту таблицу к тому, что когда-либо вам подходит. если ваша новая таблица содержит NULL в любом конкретном месте, этот поток непрочитан. Это позволит использовать списки, такие как:
Если вы добавите столбец даты в эту таблицу, вы можете сделать еще более интересные вещи.
Просто следите за своими ключами и индексами, чтобы предотвратить слишком сильное негативное воздействие. Попробуйте прочитать из таблицы USER-THREAD только путем присоединения к ним в ваши существующие запросы. Это будет работать намного быстрее, чем выполнение отдельных запросов все время.
У вас может быть таблица, которая получает вставку всякий раз, когда поток считывается, если пользователь, читающий его, еще не сделал этого. Затем, когда кто-то добавляет в поток, вы можете удалить все записи в таблице для этого потока, что делает его непрочитанным для всех пользователей.
Структура таблицы будет чем-то вроде
forum_id thread_id user_id
С дополнительным дополнительным has_read_id
для вашего основного ключа, а остальные поля has_read_id
составной ключ.