Intereting Posts
Добавление настраиваемых полей измерения для каждой настройки параметров для переменных продуктов Как суммировать общее время, используя каждую неделю месяца? Перенос чистого PHP-проекта в структуру Yii PHP подсчитывает количество непустых значений массива Переименование дубликатов строк в MySQL Разделить большой файл txt с php Требуется ли mysql_real_escape_string () при использовании подготовленных операторов? Как запустить abc.exe с помощью php Насколько безопасна функция завитки от обнюхивания? Удалите белый фон с изображения и сделайте его прозрачным с помощью PHP userland multipart / form-data handler Оптимизация географического центра в Картах Google в отношении времени поездки, если он находится внутри воды Как создать предварительную отправку в symfony, которая вызывается перед любым модулем / действием? На каждой третьей итерации в PHP поиск расширения файла, загружаемого с помощью php

Как форумы показывают вам непрочитанные темы?

У меня есть пользовательские форумы обсуждения, которые я закодировал в php / mysql, я хочу знать, как крупные форумы имен могут показать, какие темы имеют в них новые записи, обычно, изменяя изображение значка рядом с потоком, не используя практически никаких ресурсов ?

Solutions Collecting From Web of "Как форумы показывают вам непрочитанные темы?"

Самый простой способ – отслеживать, когда кто-то вошел в систему. Когда они возвращаются, все, что было обновлено с тех пор, очевидно, «новое».

У этого есть некоторые проблемы, хотя, поскольку вырубка эффективно отмечает все предметы как прочитанные.

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

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 в любом конкретном месте, этот поток непрочитан. Это позволит использовать списки, такие как:

  • Все темы с «непрочитанным» маркером
  • Все непрочитанные темы
  • Темы, прочитанные пользователем XY

Если вы добавите столбец даты в эту таблицу, вы можете сделать еще более интересные вещи.

Просто следите за своими ключами и индексами, чтобы предотвратить слишком сильное негативное воздействие. Попробуйте прочитать из таблицы USER-THREAD только путем присоединения к ним в ваши существующие запросы. Это будет работать намного быстрее, чем выполнение отдельных запросов все время.

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

Структура таблицы будет чем-то вроде

 forum_id thread_id user_id 

С дополнительным дополнительным has_read_id для вашего основного ключа, а остальные поля has_read_id составной ключ.