мне пока приходит такая идея:
кто-то пишет сообщение к теме, в спец. таблицу добавляются строки со всеми пользователями!
поля: айди пользователя, айди темы, и кол-во новых ответов. Если такая строка уже существует, то в поле "кол-во" прибавляется +1, чтобы мы знали сколько именно новых ответов
Потом, когда пользователь заходит в тему, все строки, где в поле пользователя он есть в этой теме - удаляются.
я правильно понимаю механизм? спрашиваю, потому что таблица будет содержать строки со всеми пользователями для каждой темы, получается, а это мб дохрена как много.
есть другая структура для организации новых ответов?
Спустя 1 час, 7 минут, 26 секунд (1.10.2010 - 12:55) Xpund написал(а):
Guest
А если поле ИД сделать через АвтоИнскримент? Вместо +1
А если поле ИД сделать через АвтоИнскримент? Вместо +1
Спустя 21 минута, 45 секунд (1.10.2010 - 13:17) Guest написал(а):
Xpund
)) +1 не в поле айди, а в поле где количество новых ответов в ЭТОЙ теме, для всех пользователей.
после того как какой-то пользователь зашел в тему - сбрасываем этот показатель для него в ЭТОЙ теме на 0(либо удаляем строку)
)) +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.
Да по 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 новых ответов
тут опять-таки появляется необходимость как-то связать пользователя именно с темой.
сделал, НО одна проблемка-то есть.
НУЖНО СЛЕДУЮЩЕЕ:
ну допустим есть темы
тема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, тогда получается так, что допустим у нас остались какие-то непросмотренные темы с ответами, мы вышли - закрыли сессию, и когда зайдем в след. раз, то те темы, которые в прошлый раз остались непросмотренными станут уже таковыми, так как их дата уже в любом случаи будет раньше новой активити, я правильно понимаю?
а хочется чтобы эта непросмотренность накапливалась, пока не зайдешь в тему!
в куки значит!! тут понятно, но опять вопрос есть.
вот сессия закончится, куки удалятся, last_activity передаст значение в last_visit, тогда получается так, что допустим у нас остались какие-то непросмотренные темы с ответами, мы вышли - закрыли сессию, и когда зайдем в след. раз, то те темы, которые в прошлый раз остались непросмотренными станут уже таковыми, так как их дата уже в любом случаи будет раньше новой активити, я правильно понимаю?
а хочется чтобы эта непросмотренность накапливалась, пока не зайдешь в тему!