Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Постраничная навигация и нагрузка
Форумы портала PHP.SU » » Вопросы новичков » Постраничная навигация и нагрузка

Страниц (1): [1]
 

1. dropoff - 07 Октября, 2011 - 23:42:14 - перейти к сообщению
Доброго времени суток!

Ребята, нужен совет.
Делаю небольшой сайт, но с кучей информации.
На сайте несколько разделов, а в каждом разделе до 300-400к (тысяч) записей. Что-то типа каталога.

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

По факту - нужно выводить общее число записей в категории и любую постраничную структуру.

Может есть у кого в закромах хорошее решение именно под большие объемы данных или просто совет какой, как быть?
2. OrmaJever - 08 Октября, 2011 - 00:19:48 - перейти к сообщению
я не понимаю как постраничная навигация может грузить базу? она делается через limit который после взятия n-ого количества записей заканчивает поиски. Тоесть если написано

то хоть в бд 1к хоть 100к записей время выбора должно быть примерно одинаковым, поскольку после выбора 10 значений работа с базой заканчивается.
3. dropoff - 08 Октября, 2011 - 00:26:09 - перейти к сообщению
Хм.
нужно же посчитать все записи, потом разделить на какое-то количество которое будет на странице, а потом выводить уже.
нужно же вывести хоть какое-то меню 1 2 3 4 5 ... 10 11 12... чтобы перепрыгивать по страницам.

Или я чего-то не понимаю?
4. OrmaJever - 08 Октября, 2011 - 00:40:18 - перейти к сообщению
Да, но если такое большое количество то можно же и обмануть систему?
Например не писать номер страницы, а просто зделать стрелки впёред и назад.
Или вот например несчитать общееколичество записей а например только для 10 страниц.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(*) FROM tbl LIMIT 101

както примерно так. Тоесть берём первые 101 записей и если их нащитает 101 значит 10 страниц по 10 записей есть. Если меньше то делить и выводить количество страниц и тд.
5. dropoff - 08 Октября, 2011 - 09:21:21 - перейти к сообщению
OrmaJever, спасибо!
Как говорится - Все гениальное - просто!
6. illy - 08 Октября, 2011 - 09:56:18 - перейти к сообщению
dropoff пишет:
Как говорится - Все гениальное - просто!

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

 

Powered by ExBB FM 1.0 RC1