Форум сетевых администраторов
Показаны 12 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- VBulletin 2.x.x (http://netadmin.ws/forum/forumdisplay.php?forumid=45)
-- Подсчет постов в каждом форуме ? (http://netadmin.ws/forum/showthread.php?threadid=7574)


Помещено Krionix 18-01-2004 в 09:16:

Подсчет постов в каждом форуме ?

Есть ли такой хак ? И чтоб не сильно тормозил.
Пробовал считать в лоб - при большой базе получается медленно.
Или может кто идейку подкинет как сделать чтоб не тормозило и не сильно сложно было.

__________________
Форум 3DNews


Помещено polo 18-01-2004 в 11:32:

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

__________________
Всегда есть решение.


Помещено Krionix 18-01-2004 в 13:39:

polo
У меня 2.2.9 там считается общее число постов по всему форуму.

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

__________________
Форум 3DNews


Помещено MCTarakan 18-01-2004 в 15:47:

типа как на ру-боард или на ихбт!

__________________
yMC.ru - хомяк музыканта


Помещено Krionix 19-01-2004 в 16:45:

MCTarakan
типа да

ну так что ?

__________________
Форум 3DNews


Помещено MCTarakan 19-01-2004 в 19:04:

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

__________________
yMC.ru - хомяк музыканта


Помещено Krionix 20-01-2004 в 07:09:

MCTarakan
Напряжный - это если тупо выдирать из базы сообщения и считать. И все это из-за того что нет прямой связи между постом и форумом

quote:
есть хак, который показывает последние Х сообщений юзера в его профиле... тоже грузит прилично...

Хм странно, по идее не должен тормозить, че там, 1 запрос и все.

__________________
Форум 3DNews


Помещено MCTarakan 20-01-2004 в 16:59:

Он еще и текст сообщения в комментарии показывает!

__________________
yMC.ru - хомяк музыканта


Помещено MCTarakan 25-01-2004 в 16:02:

Для ВБ3 появился такой хак: http://www.vbulletin.org/forum/showthread.php?t=60100

__________________
yMC.ru - хомяк музыканта


Помещено MarKer 28-01-2004 в 17:38:

Тут на самом деле проблема не в нагрузке, а в способе хранения.
О нагрузке можно забыть сделав так, чтобы "счетчик" сообщений в каждом форуме у пользователя обновлялся когда этот пользователь оставляет новое сообщение. Т.е. в таком случае не придется грузить базу просчетами - это придется сделать только 1 раз, чтобы посчитать те сообщения, что уже есть на форумах.
Проблема в том - где хранить эти счетчики. Ведь этих счетчиков у каждого пользователя может быть несколько (допустим, если на форуме 10 разделов - у каждого пользователя - 10 счетчиков). Плюс к этому, надо учитывать что структура форума может изменяться (добавляться/удаляться разделы) - соотв. то же должно происходить и со счетчиками.
Вариантов пока три, наиболее оптимальный третий, но перечислю все:
1) Хранить счетчики "упаковаными" (implode(), explode()) - потребуется добавить всего лишь 1 поле для каждого пользователя в БД. Основной минус - страшный гемморой при изменении структуры разделов (вместо простого запроса к БД придется обрабатывать каждую запись в БД, распаковывая его счетчики, удаляя/добавляя то что нужно, опять упаковывая и сохраняя).
2) Хранить счетчики в виде дополнительных полей в таблице с профилями пользователей. Но это тоже неоптимально и неудобно...
3) Создать под счетчики отдельную таблицу с такой структурой:
id | userid | forumid | counter
...где будут храниться счетчики пользователей. С одной стороны - ОЧЕНЬ оптимально (всего 1 простой запрос при добавлении нового сообщения и 1 запрос без каких-либо рассчетов и нагрузки при получении данных по каждому форуму). С другой - количество записей в таблице будет соответствовать такой формуле: кол-во пользователей * кол-во разделов на форуме. Т.е., допустим, 1000 пользователей и 10 разделов = 10.000 записей. По объему они конечно копеечные, но... все же отдельная таблица...
В общем, тут уже нужно решить насколько это действительно нужно...

MarKer добавил 28-01-2004 в 18:04:09:
Вообще кстати таблицу такую можно будет использовать и под другие интересные фишки - допустим, делать разные статусы (то что находится под ником) пользователям (как на той же иксе), аватары, подписи... вариантов куча
Так что для одной такой фишки может пускать отдельную таблицу и не рационально... а вот для нескольких - может быть вполне.


Помещено MCTarakan 28-01-2004 в 19:49:

хм... раньше были хаки для статистики... они примерно то и делали...

quote:
Так что для одной такой фишки может пускать отдельную таблицу и не рационально... а вот для нескольких - может быть вполне.


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

MCTarakan добавил 28-01-2004 в 19:49:59:
сорри, я говорю уже о вб3!

__________________
yMC.ru - хомяк музыканта


Помещено Krionix 29-01-2004 в 09:48:

MarKer
Когда я обдумывал как это делать, я думал почти как ты, за исключением варианта 2 (Его я сразу отбросил).
Сейчас уже делаю вариант №3.
Очень нехотелось его выбирать из-за того, что при копированиии/переносе тем/постов надо эти счетчика изменять. А если их не хранить, а считать когда надо - было бы все проще. Но получается тормозно

__________________
Форум 3DNews


Формат времени GMT. Текущее время 13:29.
Показаны 12 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.