powered by simpleCommunicator - 21.11.28     © 2024 Programmizd 02
Map
Форумы / Вопросы по форуму / Концепция отслеживания новых сообщений, Поиск: Искать сообщения, созданные автором: Программизд 02  
8 сообщений из 8, страница 1 из 1
Вопросы по форуму / Концепция отслеживания новых сообщений
    #16386
Программизд 02
Скрыть профиль Поместить в игнор-лист
Администратор
Гидроцефалы всех стран соединяйтесь!
Концепция

Отслеживание новых сообщений начинается после первого входа на форум а не с начала времён. Запоминается дата первого входа на форум.

Посетитель ниразу не был в теме:
Если в теме форума появляются сообщения после даты первого входа на форум, тема помечается меткой "новые". При входе в тему запоминается дата последнего прочтенного сообщения. Поскольку движение глаз браузер отслеживать не может, последним прочтенным сообщением считается последнее сообщение, отгруженное клиенту в браузер.

Посетитель уже был в теме:
Если в теме форума появляются сообщения после даты последнего прочтенного сообщения, тема помечается меткой "новые". При входе в тему дата последнего прочтенного сообщения обновляется на новое значение.

Новыми не считаются:
  • Собственные сообщения
  • Удаленные сообщения
  • Сообщения от пользователей и гостей, находящихся в игноре
  • Сообщения в темах и форумах, находящихся в игноре
Эти нюансы ощутимо утяжеляют запрос и увеличивают время его выполнения.

Реализация

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

Ридмаркер выдается посетителю при первом заходе, если он еще не выдан.

Выданный ридмаркер сохраняется в куках для гостей, и в куках и в профиле для пользователей.

При входе в систему ридмаркер гостя достается из куки, а ридмаркер пользователя достается из профиля и помещается в куку (как и другие настройки). Таким образом после вылогинивания, информация о прочитанных сообщениях не пропадает.

Решение проблемы распухания таблиц ридмаркеров

Форум посещает много ботов, у которых куки и сессий нет, а также много гостей, у которых протухает кука и ридмаркер теряется. Также постоянные посетители прочитали много тем, а новые темы появляются каждый день. Из за этого таблицы с информацией о прочитанных распухают, и возникает небоходимость в механизме их очистки (своего рода лангольеры).

Многие боты, распознанные по юзер-агенту, не участвуют в отслеживании новых.

Введен параметр, ограничивающий период отслеживания новых.

Введено понятие последней активности ридмаркера. Ридмаркеры, неактивные дольше чем период отслеживания новых, удаляются.
Поэтому для долго отсутсвующих посетителей, при возврате на форум, отсчёт новых начинается с момента возврата на форум, а не с начала времен, т.е. как будто он вошел на форум первый раз.

Много ботов заходят на форумы, но не входят в темы. Ридмаркеры, неактивные дольше 1-го дня, у которых нет посещений тем, удаляются.

Хранить записи о прочитанных темах, которые старее периода отслеживания новых, нет смысла. Такие записи удаляются, а дата первого входа на форум подтягивается до даты начала отслеживания новых (now - new_check_period).

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

Для анализа и мониторинга я сделал техническую статистику:

http://nosql.ru/forum/load_statistics.php

Кэширование

При загрузке основного контента проверка новых не осуществляется, таким образом контент поставлятся быстро и не тратися время на ожидание проверки новых. Если инфа о новых есть в кэше, то она берется из кэша.

Реализована периодическая проверка новых в фоновом режиме. Этот скрипт подкачивает тэги [новые] в страницу. Первый раз проверка запускается сразу после загрузки и далее каждые N секунд. Благодаря тому что первый запуск фоновой проверки новых осуществляется сразу после загрузки основной страницы, устаревшая инфа, взятая основным скриптом из кэша, обновляется актуальной инфой буквально через 1-2 секунды.

Удалось сэкономить даже на фоновой проверке. Незачем ей зря гонять проверку и грузить базу каждые N секунд, если ничего не поменялось. Система проверяет - если после последней проверки не было новых сообщений, то даже фоновая проверка новые не вычисляет, а берет из кэша.

Реализована процедура гранулярной инвалидации кэша информации о прочитанных, по мере прочтения топиков.

Отображение

Топики с новыми сообщениями бывают 2х видов:

Просто топики с новыми сообщениями

Топики, которые ты уже посещал, и в них появились новые сообщения.

Совсем новые топики с новыми сообщениями

Новосозданные топики, в которых ты не разу не был. Метка новые у этих топиков несколько отличается по цвету.
...
Изменено: 01.01.2022, 01:29 - Программизд 02
Рейтинг: 0 / 0
Вопросы по форуму / Концепция отслеживания новых сообщений
    #16398
Программизд 02
Скрыть профиль Поместить в игнор-лист
Администратор
Гидроцефалы всех стран соединяйтесь!
Гарыныч,

уже починил. Спасибо за репорт.

Возникало только если у чела в профиле есть предпочитаемы форумы.
...
Рейтинг: 0 / 0
Вопросы по форуму / Концепция отслеживания новых сообщений
    #16409
Программизд 02
Скрыть профиль Поместить в игнор-лист
Администратор
Гидроцефалы всех стран соединяйтесь!
Так фича осталась, бага исправлена:)
...
Рейтинг: 0 / 0
Вопросы по форуму / Концепция отслеживания новых сообщений
    #16922
Программизд 02
Скрыть профиль Поместить в игнор-лист
Администратор
Гидроцефалы всех стран соединяйтесь!
Пашэ,

Я просил не поискать, а сообщать если случится. Так что всё ок.

Раньше у меня иногда переход по [новые] сбоил, сейчас пока больше не сбоит. Видимо работает.
...
Рейтинг: 0 / 0
Вопросы по форуму / Концепция отслеживания новых сообщений
    #16966
Программизд 02
Скрыть профиль Поместить в игнор-лист
Администратор
Гидроцефалы всех стран соединяйтесь!
Пашэ 
Программизд 02 
Пашэ,

Я просил не поискать, а сообщать если случится. Так что всё ок.

Раньше у меня иногда переход по [новые] сбоил, сейчас пока больше не сбоит. Видимо работает.
Вчера я в игнор заносил одно тело.
Потом оно насрало в топик X, он подсветился "новые". Захожу - пусто.
Но деталей не помню, потому не сообщаю.
Раньше при таком случае кидало в начало. Сейчас - на следующее валидное или если его нет, то на предыдущее валидное. Можно конечно подумать чтобы выставлять маркер новые с учетом игнора и удаления. Это конечно утяжелит запросы.

Сейчас сделано так. В таблице ридмаркеров есть дата последнего прочитанного юзером поста в теме. У темы есть дата последнего поста. Если она больше то ставим нью.
...
Изменено: 24.11.2016, 21:00 - Программизд 02
Рейтинг: 0 / 0
Вопросы по форуму / Концепция отслеживания новых сообщений
    #16967
Программизд 02
Скрыть профиль Поместить в игнор-лист
Администратор
Гидроцефалы всех стран соединяйтесь!
Гарыныч 
Программизд 02,

дед, нужна ещё шлифовка...

например, тема из 3-х (до 12-ти) строниц, я открываю - все строницы топика, цицирую како-нить пост,
меня в резалте кидает на одну(конкретную) страницу ( ту, в которой цицируемый пост...)
ты не запоминаешь , в каком режиме открыт топик? :(((
Нет. И не планирую. Открытие в режиме "все" это каждый юзер решает сам. Это я не навязываю ссылкой. Кроме того, тема может разрастись что вообще режим все будет недоступен.
...
Рейтинг: 0 / 0
Вопросы по форуму / Концепция отслеживания новых сообщений
    #928566
Программизд 02
Скрыть профиль Поместить в игнор-лист
Администратор
Гидроцефалы всех стран соединяйтесь!
Чучело Дрючело  01.02.2019, 08:12
Деда, а почему я не вижу в приличном трепе как обновляются темы и сам приличный трёп у меня серый, как и несколько других форумов
Потому что ты выставил предпочитаемые форумы а приличный треп не поместил в их список.
...
Рейтинг: 0 / 0
Вопросы по форуму / Концепция отслеживания новых сообщений
    #941137
Программизд 02
Скрыть профиль Поместить в игнор-лист
Администратор
Гидроцефалы всех стран соединяйтесь!
qwerty1111  05.02.2019, 22:19
сам это все придумал?
Да.
qwerty1111  05.02.2019, 22:19
За бесплатно все это кодишь?
Форум да за бесплатно. Пока за него денег не поимел.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Вопросы по форуму / Концепция отслеживания новых сообщений, Поиск: Искать сообщения, созданные автором: Программизд 02  
Пользователи онлайн (15): Анонимы (13), Bing Bot 1 мин., Yandex Bot 2 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]