BupTyo3 (11.03.2011/22:57)
У друга моего давно стоит этот код, более 5000 постов на форуме и всё норм. на времени генерации страниц это никак не отражается.
И где вы там цикл увидели я понятия не имею в функции всего 3 зап
Давай займемся простой математикой
Для примера рассмотрим файл /forum/index.php ту его часть, где выводится список топиков и используется данная функция.
Для простоты, отбросим все, что в форуме было и рассмотрим, что нам привносит новый модуль.
Подсчитаем число запросов к базе.
---
Если в настройках задано число строк в списках 10, то считаем:
Получаем список топиков - 1 запрос.
Рекурсивно вызываем функцию new_posts_forum() для каждого элемента списка - 10 вызовов.
Функция new_posts_forum() использует (для каждого вызова) следующие запросы:
Счетчик постов в топике - 1 запрос
Запрос времени последнего поста юзера - 1 запрос
Запрос числа постов после поста юзера - 1 запрос
Итого, в функции new_posts_forum() используется 3 запроса к базе.
Учитывая, что для списка топиков функция new_posts_forum() вызывается рекурсивно 10 раз, в итоге получаем:
10 * 3 = 30 запросов.
Но полюбому, еще раз напоминаю, что нагрузка зависит от размера базы, числа посетителей онлайн и мощности сервера.
Потому, нельзя определить четкую границу, после которой использовать данный наворот нежелательно.
Олег, ну а можно ли сделать такую функцию чтобы она не грузила сервер?
ReaIs (12.03.2011/19:28)
Олег, ну а можно ли сделать такую функцию чтобы она не грузила сервер?
Да, теоретически можно, но для этого придется использовать дополнительные ячейки в таблице меток прочтения `cms_forum_rdm`
Полностью от рекурсии избавиться не удастся, но зато можно сократить число рекурсивных запросов (для данной функции) с 3 до 1
ReaIs (12.03.2011/19:28)
Олег, ну а можно ли сделать такую функцию чтобы она не грузила сервер?
Ну как бы три запроса мне кажется лишним было делать, тем более запрос подсчета количества постов уже есть, зачем его было делать еще раз не понятно.
Достаточно было сделать один запрос посчитав количество после последнего поста и вычесть из общего количества, получив тем самым нужную страницу.
Krite (12.03.2011/21:11)
Достаточно было сделать один запрос посчитав количество после последнего поста и вычесть из общего количества, получив тем самым нужную страницу.
Ты забыл, что вначале нужно найти этот самый "последний пост"
Вот тебе еще один запрос, итого 2.
З.Ы.
Общее к-во постов действительно считать не стоило, ибо оно уже, как ты правильно заметил, считается, достаточно просто использовать ту цифру.
Итого, без серьезной переделки алгоритма, можно убрать 1 запрос.
злые вы все.так и не помогли
dim6461 (12.03.2011/22:52)
злые вы все.так и не помогли
Что-то я не наблюдаю твоих постов в данной теме.
Чем помогать то?
Ты ничего не попутал?
AlkatraZ, с удовольствием тебе отвечу, На 4 странице слезно просил помощи.
dim6461 (13.03.2011/00:15)
AlkatraZ, с удовольствием тебе отвечу, На 4 странице слезно просил помощи.
Ааа, глянул.
Дык ничего больше делать не надо.
Поидее, само заработает.
Если конечно правильно распаковал (в форуме должны были замениться 2 файла).