Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Концепция Отслеживание новых сообщений начинается после первого входа на форум а не с начала времён. Запоминается дата первого входа на форум. Посетитель ниразу не был в теме: Если в теме форума появляются сообщения после даты первого входа на форум, тема помечается меткой "новые". При входе в тему запоминается дата последнего прочтенного сообщения. Поскольку движение глаз браузер отслеживать не может, последним прочтенным сообщением считается последнее сообщение, отгруженное клиенту в браузер. Посетитель уже был в теме: Если в теме форума появляются сообщения после даты последнего прочтенного сообщения, тема помечается меткой "новые". При входе в тему дата последнего прочтенного сообщения обновляется на новое значение. Новыми не считаются:
Реализация Для унификации гостей и пользователей, а также для поддержки информации о прочитанных после вылогинивания, используются так называемые ридмаркеры. Ридмаркер выдается посетителю при первом заходе, если он еще не выдан. Выданный ридмаркер сохраняется в куках для гостей, и в куках и в профиле для пользователей. При входе в систему ридмаркер гостя достается из куки, а ридмаркер пользователя достается из профиля и помещается в куку (как и другие настройки). Таким образом после вылогинивания, информация о прочитанных сообщениях не пропадает. Решение проблемы распухания таблиц ридмаркеров Форум посещает много ботов, у которых куки и сессий нет, а также много гостей, у которых протухает кука и ридмаркер теряется. Также постоянные посетители прочитали много тем, а новые темы появляются каждый день. Из за этого таблицы с информацией о прочитанных распухают, и возникает небоходимость в механизме их очистки (своего рода лангольеры). Многие боты, распознанные по юзер-агенту, не участвуют в отслеживании новых. Введен параметр, ограничивающий период отслеживания новых. Введено понятие последней активности ридмаркера. Ридмаркеры, неактивные дольше чем период отслеживания новых, удаляются. Поэтому для долго отсутсвующих посетителей, при возврате на форум, отсчёт новых начинается с момента возврата на форум, а не с начала времен, т.е. как будто он вошел на форум первый раз. Много ботов заходят на форумы, но не входят в темы. Ридмаркеры, неактивные дольше 1-го дня, у которых нет посещений тем, удаляются. Хранить записи о прочитанных темах, которые старее периода отслеживания новых, нет смысла. Такие записи удаляются, а дата первого входа на форум подтягивается до даты начала отслеживания новых (now - new_check_period). У активных читателей часто бывает ситуация, что он прочитал многие или все темы с новыми сообщениями. Для этих тем были созданы записи в таблице прочитнных тем, но очищены они будут лишь когда истечет период отслеживания новых, а до этого момента они будут просто мертвым грузом лежать в таблице и утяжелять ее. Чтобы этого не происходило, при проверке новых также вычисляется время первого непрочитанного поста. Все записи до этого времени больше не нужны и поэтому удаляются, а дата первого входа на форум подтягивается до этой даты. Для анализа и мониторинга я сделал техническую статистику: http://nosql.ru/forum/load_statistics.php Кэширование При загрузке основного контента проверка новых не осуществляется, таким образом контент поставлятся быстро и не тратися время на ожидание проверки новых. Если инфа о новых есть в кэше, то она берется из кэша. Реализована периодическая проверка новых в фоновом режиме. Этот скрипт подкачивает тэги [новые] в страницу. Первый раз проверка запускается сразу после загрузки и далее каждые N секунд. Благодаря тому что первый запуск фоновой проверки новых осуществляется сразу после загрузки основной страницы, устаревшая инфа, взятая основным скриптом из кэша, обновляется актуальной инфой буквально через 1-2 секунды. Удалось сэкономить даже на фоновой проверке. Незачем ей зря гонять проверку и грузить базу каждые N секунд, если ничего не поменялось. Система проверяет - если после последней проверки не было новых сообщений, то даже фоновая проверка новые не вычисляет, а берет из кэша. Реализована процедура гранулярной инвалидации кэша информации о прочитанных, по мере прочтения топиков. Отображение Топики с новыми сообщениями бывают 2х видов: Просто топики с новыми сообщениями Топики, которые ты уже посещал, и в них появились новые сообщения. Совсем новые топики с новыми сообщениями Новосозданные топики, в которых ты не разу не был. Метка новые у этих топиков несколько отличается по цвету. ... |
|||
:
Изменено: 01.01.2022, 01:29 - Программизд 02
Нравится:
Не нравится:
|
|||
23.11.2016, 20:22 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Программизд 02, деда сломал форум... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 20:31 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Гарыныч,
Цитата Ошибка в SQL запросе! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND V1_TOPIC.FORUM_ID IN (2,3,6,7,9) AND V1_TOPIC.DELETED = '0' AND (RESTRICTED_' at line 9 SELECT COUNT(*) CNT FROM V1_TOPIC INNER JOIN V1_FORUM ON (V1_TOPIC.FORUM_ID = V1_FORUM.ID) LEFT JOIN V1_TOPIC_READ_MARKERS ON (V1_TOPIC.ID = V1_TOPIC_READ_MARKERS.TOPIC_ID AND V1_TOPIC_READ_MARKERS.READ_MARKER = 'bd87d48ca78e865b19337ea4de3b2844') LEFT JOIN V1_FORUM_READ_MARKERS ON (V1_TOPIC.FORUM_ID = V1_FORUM_READ_MARKERS.FORUM_ID AND V1_FORUM_READ_MARKERS.READ_MARKER = 'bd87d48ca78e865b19337ea4de3b2844') WHERE AND V1_TOPIC.FORUM_ID IN (2,3,6,7,9) AND V1_TOPIC.DELETED = '0' AND (RESTRICTED_ACCESS = '0' OR V1_FORUM.ID IN (SELECT FORUM_ID FROM V1_FORUM_MODERATOR WHERE USER_ID = 37) OR V1_FORUM.ID IN (SELECT FORUM_ID FROM V1_FORUM_MEMBER WHERE USER_ID = 37) ) AND V1_TOPIC.LAST_MESSAGE_DATE > V1_FORUM_READ_MARKERS.FIRST_READ_DATE AND (V1_TOPIC_READ_MARKERS.LAST_READ_DATE IS NULL OR V1_TOPIC.LAST_MESSAGE_DATE > V1_TOPIC_READ_MARKERS.LAST_READ_DATE) HAVING COUNT(*) > 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 20:31 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Гарыныч, уже починил. Спасибо за репорт. Возникало только если у чела в профиле есть предпочитаемы форумы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 20:34 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Программизд 02, блин, надо было оставить такой фичу ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 20:37 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Так фича осталась, бага исправлена:) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2016, 20:57 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Программизд 02 Поступали жалобы и иногда сам замечал, что механизм работает не всегда корректно. Возможно когда речь шла об удаленных, перенесенных или игнорируемых постах. Большая просьба сообщать о замеченных ошибках в работе метки [новые]. В общем логика работы такая. Когда темы начинают помечаться тэгом [новые]. Чел первый раз зашел на форум. Дата первого входа запоминается. Всё. Трэкинг по форуму начался. Если в темах форума появляются новые посты после этой даты, то эти темы для чела помечаются тэгом [новые]. Первы новым постом в теме считается первый пост после этой даты. Если чел заходит в топик, то сохраняется дата последнего прочитанного сообщения (последнего сообщения на странице). Если позже в теме появились сообщения после этой даты, то тема для чела помечается тэгом [новые]. Если идет переход на сообщение, которое оказалось удалено, перенесено вдругую тему или автор в игноре у посетителя, то ищется следующее валидное сообщение в теме и переходит к нему. Если следующего валидного сообщения не найдено, то ищется самое новое валидное из предыдущих постов и переходит к нему. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 19:48 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Программизд 02 Так фича осталась, бага исправлена:) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 19:52 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Пашэ, Я просил не поискать, а сообщать если случится. Так что всё ок. Раньше у меня иногда переход по [новые] сбоил, сейчас пока больше не сбоит. Видимо работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 20:14 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Программизд 02 Пашэ, Я просил не поискать, а сообщать если случится. Так что всё ок. Раньше у меня иногда переход по [новые] сбоил, сейчас пока больше не сбоит. Видимо работает. Потом оно насрало в топик X, он подсветился "новые". Захожу - пусто. Но деталей не помню, потому не сообщаю. ... |
|||
:
Изменено: 24.11.2016, 20:51 - Пашэ
Нравится:
Не нравится:
|
|||
24.11.2016, 20:48 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Программизд 02, дед, нужна ещё шлифовка... например, тема из 3-х (до 12-ти) строниц, я открываю - все строницы топика, цицирую како-нить пост, меня в резалте кидает на одну(конкретную) страницу ( ту, в которой цицируемый пост...) ты не запоминаешь , в каком режиме открыт топик? ... |
|||
:
Изменено: 24.11.2016, 20:50 - Гарыныч
Нравится:
Не нравится:
|
|||
24.11.2016, 20:50 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Пашэ Программизд 02 Пашэ, Я просил не поискать, а сообщать если случится. Так что всё ок. Раньше у меня иногда переход по [новые] сбоил, сейчас пока больше не сбоит. Видимо работает. Потом оно насрало в топик X, он подсветился "новые". Захожу - пусто. Но деталей не помню, потому не сообщаю. Сейчас сделано так. В таблице ридмаркеров есть дата последнего прочитанного юзером поста в теме. У темы есть дата последнего поста. Если она больше то ставим нью. ... |
|||
:
Изменено: 24.11.2016, 21:00 - Программизд 02
Нравится:
Не нравится:
|
|||
24.11.2016, 20:59 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Гарыныч Программизд 02, дед, нужна ещё шлифовка... например, тема из 3-х (до 12-ти) строниц, я открываю - все строницы топика, цицирую како-нить пост, меня в резалте кидает на одну(конкретную) страницу ( ту, в которой цицируемый пост...) ты не запоминаешь , в каком режиме открыт топик? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 21:03 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Пашэ 24.11.2016, 19:48 Программизд 02 Поступали жалобы и иногда сам замечал, что механизм работает не всегда корректно. Возможно когда речь шла об удаленных, перенесенных или игнорируемых постах. Большая просьба сообщать о замеченных ошибках в работе метки [новые]. В общем логика работы такая. Когда темы начинают помечаться тэгом [новые]. Чел первый раз зашел на форум. Дата первого входа запоминается. Всё. Трэкинг по форуму начался. Если в темах форума появляются новые посты после этой даты, то эти темы для чела помечаются тэгом [новые]. Первы новым постом в теме считается первый пост после этой даты. Если чел заходит в топик, то сохраняется дата последнего прочитанного сообщения (последнего сообщения на странице). Если позже в теме появились сообщения после этой даты, то тема для чела помечается тэгом [новые]. Если идет переход на сообщение, которое оказалось удалено, перенесено вдругую тему или автор в игноре у посетителя, то ищется следующее валидное сообщение в теме и переходит к нему. Если следующего валидного сообщения не найдено, то ищется самое новое валидное из предыдущих постов и переходит к нему. ... |
|||
Зачем платить психотерапевту, если его можно придумать, и разговаривать с ним совершенно бесплатно?
:
Нравится:
Не нравится:
|
|||
12.10.2018, 16:59 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Деда, а почему я не вижу в приличном трепе как обновляются темы и сам приличный трёп у меня серый, как и несколько других форумов ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2019, 08:12 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Чучело Дрючело 01.02.2019, 08:12 Деда, а почему я не вижу в приличном трепе как обновляются темы и сам приличный трёп у меня серый, как и несколько других форумов ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2019, 08:14 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Программизд 02 23.11.2016, 20:22 Концепция Отслеживание новых сообщений начинается после первого входа на форум. Запоминается дата первого входа на форум. Посетитель ниразу не был в теме: Если в теме форума появляются сообщения после даты первого входа на форум, тема помечается меткой "новые". При входе в тему запоминается дата последнего прочтенного сообщения. Поскольку движение глаз браузер отслеживать не может, последним прочтенным сообщением считается последнее сообщение, отгруженное клиенту в браузер. Посетитель уже был в теме: Если в теме форума появляются сообщения после даты последнего прочтенного сообщения, тема помечается меткой "новые". При входе в тему дата последнего прочтенного сообщения обновляется на новое значение. Новыми не считаются:
Реализация Для унификации гостей и пользователей, а также для поддержки информации о прочитанных после вылогинивания, используются так называемые ридмаркеры. Ридмаркер выдается посетителю при первом заходе, если он еще не выдан. Выданный ридмаркер сохраняется в куках для гостей, и в куках и в профиле для пользователей. При входе в систему ридмаркер гостя достается из куки, а ридмаркер пользователя достается из профиля и помещается в куку (как и другие настройки). Таким образом после вылогинивания, информация о прочитанных сообщениях не пропадает. Решение проблемы распухания таблиц ридмаркеров Форум посещает много ботов, у которых куки и сессий нет, а также много гостей, у которых протухает кука и ридмаркер теряется. Также постоянные посетители прочитали много тем, а новые темы появляются каждый день. Из за этого таблицы с информацией о прочитанных распухают, и возникает небоходимость в механизме их очистки (своего рода лангольеры). Многие боты, распознанные по юзер-агенту, не участвуют в отслеживании новых. Введен параметр, ограничивающий период отслеживания новых. Введено понятие последней активности ридмаркера. Ридмаркеры, неактивные дольше чем период отслеживания новых, удаляются. Много ботов заходят на форумы, но не входят в темы. Ридмаркеры, неактивные дольше 1-го дня, у которых нет посещений тем, удаляются. Хранить записи о прочитанных темах, которые старее периода отслеживания новых, нет смысла. Такие записи удаляются, а дата первого входа на форум подтягивается до даты начала отслеживания новых (now - new_check_period). У активных читателей часто бывает ситуация, что он прочитал многие или все темы с новыми сообщениями. Для этих тем были созданы записи в таблице прочитнных тем, но очищены они будут лишь когда истечет период отслеживания новых, а до этого момента они будут просто мертвым грузом лежать в таблице и утяжелять ее. Чтобы этого не происходило, при проверке новых также вычисляется время первого непрочитанного поста. Все записи до этого времени больше не нужны и поэтому удаляются, а дата первого входа на форум подтягивается до этой даты. Для анализа и мониторинга я сделал техническую статистику: http://nosql.ru/forum/load_statistics.php Кэширование При загрузке основного контента проверка новых не осуществляется, таким образом контент поставлятся быстро и не тратися время на ожидание проверки новых. Если инфа о новых есть в кэше, то она берется из кэша. Реализована периодическая проверка новых в фоновом режиме. Этот скрипт подкачивает тэги [новые] в страницу. Первый раз проверка запускается сразу после загрузки и далее каждые N секунд. Благодаря тому что первый запуск фоновой проверки новых осуществляется сразу после загрузки основной страницы, устаревшая инфа, взятая основным скриптом из кэша, обновляется актуальной инфой буквально через 1-2 секунды. Удалось сэкономить даже на фоновой проверке. Незачем ей зря гонять проверку и грузить базу каждые N секунд, если ничего не поменялось. Система проверяет - если после последней проверки не было новых сообщений, то даже фоновая проверка новые не вычисляет, а берет из кэша. Реализована процедура гранулярной инвалидации кэша информации о прочитанных, по мере прочтения топиков. Отображение Топики с новыми сообщениями бывают 2х видов: Просто топики с новыми сообщениями Топики, которые ты уже посещал, и в них появились новые сообщения. Совсем новые топики с новыми сообщениями Новосозданные топики, в которых ты не разу не был. Метка новые у этих топиков несколько отличается по цвету. За бесплатно все это кодишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 22:19 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
qwerty1111 05.02.2019, 22:19 сам это все придумал? qwerty1111 05.02.2019, 22:19 За бесплатно все это кодишь? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 22:33 |
|
Концепция отслеживания новых сообщений
|
|||
---|---|---|---|
#18+
Ordnung ! ... |
|||
Гарыныч сказал - Гарыныч спиздел
#деда#ослег#подослали на чём бы я не осуществлял бы или осуществлял бы, объяснял бы или не объяснял бы, СОСТОЯНИЕ СИТУАЦИИ ВСЁ РАВНО ОТ ЭТОГО НЕ ИЗМЕНИЛОСЬ БЫ (с) Кикки :
Нравится:
Не нравится:
|
|||
05.02.2019, 22:35 |
|
Start [/forum-old/topic.php?fid=6&tid=854&gotonew=1]: |
0ms |
get settings: |
1ms |
get forum list: |
3ms |
check forum access: |
0ms |
check topic access: |
0ms |
track hit: |
29ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
1ms |
get page messages: |
60ms |
update_topic_read_status (854): 05.02.2019 23:56:34: |
0ms |
get tp. blocked users: |
0ms |
get online users: |
3ms |
others: | 55ms |
total: | 166ms |
0 / 0 |