Форум → Программирование → PHP для идиотов → Форум на php
Форум на php
Страницы: ← Следующая страница →
-
Ситуация следующая:
Я пишу свой форум на php5 и mysql5
Сама структура работает, все технически готово. Кроме одного:
Сижу туплю, не могу придумать, каким образом можно отслеживать прочтение тем пользователем.
Чтобы при входе на форум, непрочитанные темы выделялись другим цветом, а при прочтении эта метка с темы снималась.
Каким образом вытащить новые темы и сообщения с последнего посещения - понятно.
А каким образом сделать отметки о прочтении?
Насколько я знаю, в популярных движках форумов это как-то реализовано через кукисы. Саму систему пока понять не могу.
Очень прошу помощи или хотя бы мысли. -
25 декабря 2007 г. 16:41, спустя 45 минут 51 секунду
в таблице создай поле "viewed" (возможные значения могут быть или 0 или 1)
и отмечай в нем…
если просмотрено то "1" , если нет , то "0" …
Надеюсь я написал то, что ты хотел увидеть… -
25 декабря 2007 г. 16:49, спустя 8 минут 51 секунду
ТАк надо для каждого юзера.
Так один из 100 пользователей просмотрит, а в итоге для всех она станет прочитанной -
25 декабря 2007 г. 17:05, спустя 16 минут
NRG, нет
LDZ, думаю, надо делать таблицу соотношений юзер - топик и валуе (0/1)
если есть связка и валуе=1, то топик прочтен
по времени — понятно, смотреть дату последней активности юзера
скоро тоже буду задаваться этим вопросом..все умрут, а я изумруд -
25 декабря 2007 г. 17:11, спустя 5 минут 30 секунд
md5, тоже не катит. вот почему:
Чтобы эта схема работала необхдимо:
1. При входе пользователя вычислять кол-во новых сообщений в последнего сообщения
2. Вставить в ту таблицу соотношения. Т.е на каждое новое сообещние - новая запись
3. При прочтении темы - удаление или изменение записей этой таблицы
А тепреь проблема:
ЧТо если человек не заходил больше месяца на форум, и с этого времени накопилось более 5000 сообщений.
При входе запрашивается кол-во сообщений, потом все они (5000) вставляются в БД!
ЧТо будет с серваком, если таких зайдет несколько человек? -
25 декабря 2007 г. 17:22, спустя 10 минут 58 секунд
LDZ, а зачем вставлять запись?
я же говорю, при заходе нашего пропавшего человека выбирать, если ряда нет или валуе=0, то не прочитано
при прочтении темы — изменение валуе в 0
при добавлении нового сообщение — изменение валуе в 0 всем юзерам, кроме того, что сообщение оставилвсе умрут, а я изумруд -
25 декабря 2007 г. 17:25, спустя 2 минуты 49 секунд
Все равно, это будет нормально работать при небольшом кол-ве посетителей и тем.
Что будет, если на форуме будет 10000 сообщений и 1000 пользователей? Это необходимо будет для КАЖДОГО пользователя иметь запись на КАЖДОЕ сообщение.
Следовательно в таком случае у нас получается 100000000 записей! -
25 декабря 2007 г. 17:31, спустя 6 минут 20 секунд
Я думаю, можно давать каждому разделу форума, подфоруму и топику уникальные id, что сократит количество записей прочитаных/непрочитаных тем. Хотя… подумать действительно есть над чем. -
25 декабря 2007 г. 17:31, спустя 17 секунд
да не на сообщение а на ТЕМУ
user_id | topic_id | value
при изменении темы — UPDATE value в 0 для всех, кроме автора
при прочтении REPLACE INTO по уникальным ключам user_id + topic_id — value в 0
вобщем мы щас подождем тех, кто больше в БД шарит ;)все умрут, а я изумруд -
-
25 декабря 2007 г. 18:23, спустя 51 минуту 37 секунд
NRG, нет
почему ? =(
я в принципе именно это и имел ввиду…user_id | topic_id | value
-
25 декабря 2007 г. 18:28, спустя 4 минуты 37 секунд
md5
+1Следовательно в таком случае у нас получается 100000000 записей!
а что тебя смущает? -
25 декабря 2007 г. 18:33, спустя 5 минут 16 секунд
Меня смущает кол-во записей.
При большом кол-ве юзеров в таком случае нагрузка на сервак будет ощутимой. Потому что при каждой загрузке страницы эта таблица проверяется на наличие новых записей. Если одновременно будет активно работать 500 пользователей, то каждый при каждой загрузке страницы будет просматриваться 100 млн записей. Меня хостер повесит за такое -
25 декабря 2007 г. 20:53, спустя 2 часа 20 минут 6 секунд
КАЖДОГО пользователя иметь запись на КАЖДОЕ сообщение
На каждую тему. И не каждого на каждую, а только для просмотренных.Потому что при каждой загрузке страницы эта таблица проверяется на наличие новых записей
Зачем?Если одновременно будет активно работать 500 пользователей, то каждый при каждой загрузке страницы будет просматриваться 100 млн записей. Меня хостер повесит за такое
Когда будут такие объемы, можете потратить выручку за пару дней на покупка дата-центра. -
25 декабря 2007 г. 22:14, спустя 1 час 20 минут 19 секунд
Если одновременно будет активно работать 500 пользователей, то каждый при каждой загрузке страницы будет просматриваться 100 млн записей. Меня хостер повесит за такое
Когда будут такие объемы, можете потратить выручку за пару дней на покупка дата-центра.
браво )
и всё же хочется услышать Гхоста и АлехБвсе умрут, а я изумруд
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!