Помощник
|
Наличие новых сообщений в теме, как реализовано? |
fedornabilkin
|
Сообщение
#1
|
||
|
|
||
|
|||
wolverine_hb |
17.5.2013, 17:31;
Ответить: wolverine_hb
Сообщение
#2
|
|
Не знаю как это реализовано в движках, с форумами тесно не работал, но если рассуждать логически, если мы зайдем на форум в качестве гостя нам все темы показываются новыми, вне зависимости от того смотрели мы их или нет, а если вы авторизированы, и очистить куки темы все равно правильно отображаются поэтому мне кажется куки тут не при чем, подозреваю что в теблице с юзерами хранится поле в котором через запятую хранятся все прочитанные им темы, конечно может я ошибаюсь, но мне так кажется.
|
|
|
isvetlichniy |
17.5.2013, 17:38;
Ответить: isvetlichniy
Сообщение
#3
|
|
если конкретно об этом форуме, то движен называется IPB, поставь его и проанализируй как все работает
|
|
|
fedornabilkin
|
Сообщение
#4
|
|
[member=denis79513], просто через запятую не получится. Тут нужен массив и хранить его наверно придется в json.
Потому что надо будет сверять дату последнего поста в теме и дату в массиве. Например array("theme_id"=>12345678); В данный момент все это как-то абстракто представляю, никакой конкретики |
|
|
MEGApixel |
20.5.2013, 11:19;
Ответить: MEGApixel
Сообщение
#5
|
|
Если будет в одной ячейке храниться вся эта инфа через запятую или в json-формате, то я сильно разочаруюсь в движке. Это прямое нарушение нормализации данных таблиц в реляционных БД. По идее в серьезных движках такого быть не должно. Так как такая досадная вещь очень сильно влияет на производительность при больших объемах информации.
|
|
|
html-ka |
20.5.2013, 11:31;
Ответить: html-ka
Сообщение
#6
|
|
зачем json, сереализацию никто не отменял, еще не забывай, что посты могут быть новые, а также прочитанные или или нет, глянь куки на этом форуме, сейчас с планшета не могу развернутее ответить.
// создаем массив данных
$fruits = array ( "fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"), "numbers" => array(1, 2, 3, 4, 5, 6), "holes" => array("first", 5 => "second", "third") ); // сереализуем данные $fruits = serialize($fruits); echo "<h2>выводим сереализованные данные, смотрим на тип переменной</h2>"; echo "<pre>"; var_dump(serialize($fruits)); echo "</pre>"; // преобразуем сереализованные данные $fruits = unserialize($fruits); echo "<h2>выводим данные</h2>"; echo "<pre>"; print_r($fruits); echo "</pre>"; |
|
|
fedornabilkin
|
Сообщение
#7
|
|
Это прямое нарушение нормализации данных таблиц в реляционных БД Вот и меня это тоже смущает. сереализацию никто не отменял Получается то же самое что ли? В плане производительности. Кто-нибудь самостоятельно реализовывал подобную задачу? |
|
|
MEGApixel |
21.5.2013, 13:19;
Ответить: MEGApixel
Сообщение
#8
|
|
Зашел на форум с другого браузера - не прочитанные темы такие же, как и в основном браузере. То есть информация о посещенных/прочитанных темах хранится все-таки на сервере (если брать движок этого форума).
Предположим, что у каждого пользователя в таблице, допустим, `users` есть поле `themes`, куда сохраняется вся информация о посещенных темах, прочитанных сообщениях и пр. Если по этому полю в дальнейшем не планируется поиск, а данные из него нужно будет только извлечь зная id пользователя - то такой вариант будет приемлемым. А если в движке в будущем предусматриваются запросы типа `SELECT `id` FROM `users` WHERE `themes` LIKE (...) ` - то такая структура уже подходить не будет, в виду низкого быстродействия. Если такого не предвидится, то можно хранить в одной ячейке всю инфу. А формат хранения (сериализация, json, банально через запятую, массив и пр.) можно выбрать самостоятельно. Согласен, что кривовато и тема остается открытой. Если кому не жалко времени, можно покопаться в исходниках движка. |
|
|
matroskin8 |
21.5.2013, 14:20;
Ответить: matroskin8
Сообщение
#9
|
|
MEGApixel, И чем этот вариант отличается от того, который описан в заминусованном Вами посте?
То, что данные о посещенных темах хранятся не в куках - это логично, поскольку форум может быть весьма объемным и на все темы может и кук не хватить... да и привязка должна быть именно к юзеру, а не к клиенту. Но тема алгоритма действительно интересна. Здесь предлагается несколько интересных вариантов решения. |
|
|
MEGApixel |
21.5.2013, 15:00;
Ответить: MEGApixel
Сообщение
#10
|
|
И чем этот вариант отличается от того, который описан в заминусованном Вами посте? Ничем. Был не прав. Жаль нельзя минусы исправить обратно А по поводу вопроса ТС, то пришло такое решение. Создать отдельную таблицу, в которой будут записываться все "атомарные" действия юзеров по поводу посещения тем. Назовем её, к примеру, `visit`. Она предположительно будет иметь такую структуру:
Думаю, что в разъяснениях особо не нуждается. Теперь по порядку.
Вот как-то так. Алгоритм можно дополнять и расширять, но его основу я вижу такой. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Большие ставки для кликов в Я.Директ. Как удешевить? | 2 | rownong27 | 1124 | 26.3.2024, 14:13 автор: knezevolk |
|
Как вы бросили работу и перешли на заработок с сайтов? | 12 | uahomka | 2298 | 25.3.2024, 6:52 автор: Skyworker |
|
Как отозвать банковский платеж фрилансеру? | 28 | metvekot | 3921 | 25.3.2024, 6:34 автор: Skyworker |
|
Как вывести деньги в Украине с заблокированного Юмани ? | 23 | freeax | 3648 | 24.3.2024, 20:55 автор: Liudmila |
|
Через какой браузер и как можно найти в кэшэ браузера видео | 10 | Room | 1943 | 23.3.2024, 7:41 автор: Room |
Текстовая версия | Сейчас: 29.3.2024, 15:43 |