ФорумПрограммированиеPHP для идиотов → Форум на php

Форум на php

  • LDZ

    Сообщения: 5 Репутация: N Группа: Кто попало

    Spritz 25 декабря 2007 г. 15:55

    Ситуация следующая:

    Я пишу свой форум на php5 и mysql5

    Сама структура работает, все технически готово. Кроме одного:

    Сижу туплю, не могу придумать, каким образом можно отслеживать прочтение тем пользователем.

    Чтобы при входе на форум, непрочитанные темы выделялись другим цветом, а при прочтении эта метка с темы снималась.

    Каким образом вытащить новые темы и сообщения с последнего посещения - понятно.

    А каким образом сделать отметки о прочтении?

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

    Очень прошу помощи или хотя бы мысли.
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 25 декабря 2007 г. 16:41, спустя 45 минут 51 секунду

    в таблице создай поле "viewed" (возможные значения могут быть или 0 или 1)
    и отмечай в нем…
    если просмотрено то "1" , если нет , то "0" …

    Надеюсь я написал то, что ты хотел увидеть…
  • LDZ

    Сообщения: 5 Репутация: N Группа: Кто попало

    Spritz 25 декабря 2007 г. 16:49, спустя 8 минут 51 секунду

    ТАк надо для каждого юзера.

    Так один из 100 пользователей просмотрит, а в итоге для всех она станет прочитанной
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 25 декабря 2007 г. 17:05, спустя 16 минут

    NRG, нет

    LDZ, думаю, надо делать таблицу соотношений юзер - топик и валуе (0/1)
    если есть связка и валуе=1, то топик прочтен

    по времени — понятно, смотреть дату последней активности юзера

    скоро тоже буду задаваться этим вопросом..
    все умрут, а я изумруд
  • LDZ

    Сообщения: 5 Репутация: N Группа: Кто попало

    Spritz 25 декабря 2007 г. 17:11, спустя 5 минут 30 секунд

    md5, тоже не катит. вот почему:

    Чтобы эта схема работала необхдимо:

    1. При входе пользователя вычислять кол-во новых сообщений в последнего сообщения
    2. Вставить в ту таблицу соотношения. Т.е на каждое новое сообещние - новая запись
    3. При прочтении темы - удаление или изменение записей этой таблицы

    А тепреь проблема:

    ЧТо если человек не заходил больше месяца на форум, и с этого времени накопилось более 5000 сообщений.
    При входе запрашивается кол-во сообщений, потом все они (5000) вставляются в БД!

    ЧТо будет с серваком, если таких зайдет несколько человек?
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 25 декабря 2007 г. 17:22, спустя 10 минут 58 секунд

    LDZ, а зачем вставлять запись?

    я же говорю, при заходе нашего пропавшего человека выбирать, если ряда нет или валуе=0, то не прочитано
    при прочтении темы — изменение валуе в 0

    при добавлении нового сообщение — изменение валуе в 0 всем юзерам, кроме того, что сообщение оставил
    все умрут, а я изумруд
  • LDZ

    Сообщения: 5 Репутация: N Группа: Кто попало

    Spritz 25 декабря 2007 г. 17:25, спустя 2 минуты 49 секунд

    Все равно, это будет нормально работать при небольшом кол-ве посетителей и тем.

    Что будет, если на форуме будет 10000 сообщений и 1000 пользователей? Это необходимо будет для КАЖДОГО пользователя иметь запись на КАЖДОЕ сообщение.

    Следовательно в таком случае у нас получается 100000000 записей!
  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 25 декабря 2007 г. 17:31, спустя 6 минут 20 секунд

    Я думаю, можно давать каждому разделу форума, подфоруму и топику уникальные id, что сократит количество записей прочитаных/непрочитаных тем. Хотя… подумать действительно есть над чем.
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 25 декабря 2007 г. 17:31, спустя 17 секунд

    да не на сообщение а на ТЕМУ

    user_id | topic_id | value

    при изменении темы — UPDATE value в 0 для всех, кроме автора
    при прочтении REPLACE INTO по уникальным ключам user_id + topic_id — value в 0

    вобщем мы щас подождем тех, кто больше в БД шарит ;)
    все умрут, а я изумруд
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 25 декабря 2007 г. 17:32, спустя 30 секунд

    KENDO, неочем
    все умрут, а я изумруд
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 25 декабря 2007 г. 18:23, спустя 51 минуту 37 секунд

    NRG, нет


    почему ? =(

    я в принципе именно это и имел ввиду…

    user_id | topic_id | value
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 25 декабря 2007 г. 18:28, спустя 4 минуты 37 секунд

    md5
    +1
    Следовательно в таком случае у нас получается 100000000 записей!

    а что тебя смущает?
  • LDZ

    Сообщения: 5 Репутация: N Группа: Кто попало

    Spritz 25 декабря 2007 г. 18:33, спустя 5 минут 16 секунд

    Меня смущает кол-во записей.

    При большом кол-ве юзеров в таком случае нагрузка на сервак будет ощутимой. Потому что при каждой загрузке страницы эта таблица проверяется на наличие новых записей. Если одновременно будет активно работать 500 пользователей, то каждый при каждой загрузке страницы будет просматриваться 100 млн записей. Меня хостер повесит за такое
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 25 декабря 2007 г. 20:53, спустя 2 часа 20 минут 6 секунд

    КАЖДОГО пользователя иметь запись на КАЖДОЕ сообщение

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

    Зачем?
    Если одновременно будет активно работать 500 пользователей, то каждый при каждой загрузке страницы будет просматриваться 100 млн записей. Меня хостер повесит за такое

    Когда будут такие объемы, можете потратить выручку за пару дней на покупка дата-центра.
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 25 декабря 2007 г. 22:14, спустя 1 час 20 минут 19 секунд


    Если одновременно будет активно работать 500 пользователей, то каждый при каждой загрузке страницы будет просматриваться 100 млн записей. Меня хостер повесит за такое

    Когда будут такие объемы, можете потратить выручку за пару дней на покупка дата-центра.

    браво )

    и всё же хочется услышать Гхоста и АлехБ
    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!