[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: новые ответы к темам
Guest
как правильно организовать?
мне пока приходит такая идея:

кто-то пишет сообщение к теме, в спец. таблицу добавляются строки со всеми пользователями!

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

Потом, когда пользователь заходит в тему, все строки, где в поле пользователя он есть в этой теме - удаляются.

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

есть другая структура для организации новых ответов?



Спустя 1 час, 7 минут, 26 секунд (1.10.2010 - 12:55) Xpund написал(а):
Guest
А если поле ИД сделать через АвтоИнскримент? Вместо +1

Спустя 21 минута, 45 секунд (1.10.2010 - 13:17) Guest написал(а):
Xpund
)) +1 не в поле айди, а в поле где количество новых ответов в ЭТОЙ теме, для всех пользователей.

после того как какой-то пользователь зашел в тему - сбрасываем этот показатель для него в ЭТОЙ теме на 0(либо удаляем строку)

Спустя 56 минут, 44 секунды (1.10.2010 - 14:14) FatCat написал(а):
Цитата (Guest @ 1.10.2010 - 12:48)
в спец. таблицу добавляются строки со всеми пользователями!

Посчитаем затраты применительно к этому форуму.
Цитата
Зарегистрировано 13066 пользователей
Значит, писать 13065 айдишников?
Да по 500-1000 сообщений в день.
Спецтаблица будет расти как на дрожжах.

Алгоритм очень простой.
В таблице мемберов есть поля last_visit и last_activity.
При первом входе оба поля заполняются текущим временем. Дальше при каждом обращении к сайту поле last_activity обновляется текущим временем.
При создании новой сессии (новый визит после перерыва) данные из last_activity (последний запрос в прошлой сессии) копируются в last_visit.
"Новыми" метятся те сообщения, время создания которых больше чем last_activity.

Спустя 21 минута, 45 секунд (1.10.2010 - 14:36) Guest написал(а):
FatCat
вот, что я и хотел услышать!!
спасибо!!!

Спустя 43 минуты, 58 секунд (1.10.2010 - 15:19) Guest написал(а):
FatCat
сделал, НО одна проблемка-то есть.

НУЖНО СЛЕДУЮЩЕЕ:

ну допустим есть темы

тема1 / 1 новый ответ
тема2 / 2 новых ответа
тема3 / 1 новый ответ

обновляю страницу, все остается так же

тема1 / 1 новый ответ
тема2 / 2 новых ответа
тема3 / 1 новый ответ

захожу в тему 1, потом возвращаюсь в категорию, а там так

тема1 / 0 новых ответов
тема2 / 2 новых ответа
тема3 / 1 новый ответ

и.т.д.



А СЕЙЧАС ПРОИСХОДИТ ТАК

темы

тема1 / 1 новый ответ
тема2 / 2 новых ответа
тема3 / 1 новый ответ

захожу в первый раз после отсутствия

тема1 / 1 новый ответ
тема2 / 2 новых ответа
тема3 / 1 новый ответ

обновляю страницу

тема1 / 0 новых ответов
тема2 / 0 новых ответов
тема3 /0 новых ответов

тут опять-таки появляется необходимость как-то связать пользователя именно с темой.

Спустя 16 минут, 57 секунд (1.10.2010 - 15:36) inpost написал(а):
FatCat
Собственно я тоже не совсем это понял...

Спустя 3 часа, 2 минуты, 6 секунд (1.10.2010 - 18:39) FatCat написал(а):
Айдишники просмотренных страниц и time() их просотра пишем в куки.
Дальше при выводе тем смотрятся куки. Если в куке есть айдишник, новые сообщения считаются от времени по куке; если в куке нет - по БД.


Цитата (Guest @ 1.10.2010 - 16:19)
обновляю страницу

тема1 / 0 новых ответов
тема2 / 0 новых ответов
тема3 /0 новых ответов

Новая сессия? Откуда?

Как у нас сделано:
- При первом заходе создается запись в таблице сессий, в ней тоже время last_activity при каждом переходе страницы.
Перед этим удаляются все сессии по условию last_activity < (time()-900).
Таким образом, в таблице есть только сессии не старше 15 минут.

Итак, если между посещениями страниц прошло менее 15 минут, сессия НЕ удалилась, а значит и перезаписи в таблице мемберов не произошло, а значит и обнуления непрочитанных тоже не произойдет.

Спустя 1 час, 36 минут, 32 секунды (1.10.2010 - 20:15) Guest написал(а):
FatCat
в куки значит!! тут понятно, но опять вопрос есть.

вот сессия закончится, куки удалятся, last_activity передаст значение в last_visit, тогда получается так, что допустим у нас остались какие-то непросмотренные темы с ответами, мы вышли - закрыли сессию, и когда зайдем в след. раз, то те темы, которые в прошлый раз остались непросмотренными станут уже таковыми, так как их дата уже в любом случаи будет раньше новой активити, я правильно понимаю?

а хочется чтобы эта непросмотренность накапливалась, пока не зайдешь в тему!



Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.