Методы понижения нагрузки

Ord

Новичок
Методы понижения нагрузки

Тут я делаю сайт один и хотел сделать меню с вложенными пунктами, что-то вроде:

Пункт1
- Подпункт1
- Подпункт2
- Подпункт3

Пункт2
- Подпункт1
- Подпункт2
- Подпункт3

тоесть 2 запроса из 2-х таблиц, сначала идёт выборка главного пункта, потом подпунктов для этого пункта ну и потом также для 2-го и третьего пункта меню. Думаю что при 7-8 тыс. уникальных посетителей в день такая схема может вызвать большую нагрузку на сервер, поэтому хотел поинтересоваться - есть ли какие-нибудь общепринятые методы решения таких задач?
 

Ord

Новичок
Тоесть запись в текстовый файл всей структуры?
 

Фанат

oncle terrible
Команда форума
Думаю что при 7-8 тыс. уникальных посетителей в день такая схема может вызвать большую нагрузку на сервер
Думать не надо.
И в текстовый файл писать структуру не надо.

Общепринятый метод решения ТАКИХ задач - выкинуть их из головы.
 

demongloom

Новичок
Автор оригинала: *****
Думать не надо.
И в текстовый файл писать структуру не надо.

Общепринятый метод решения ТАКИХ задач - выкинуть их из головы.
Выкинуть это не решение. А вот нормальный пример кеширования было бы неплохо привести.
Писать результат в текстовый файл и считывать его --- не факт что будет быстрее, чем получать тот же кешированный результат запроса из мюскля. Мюскль может хранить в памяти часть результатов запросов. Из моей практики еще больший прирост производительности давало использование пхп плагина xcache, с сохранением уже готового результата в виде переменной в памяти, как есть, не используя сериализацию. Таким образом снижается и сама нагрузка на мюскль, поскольку сам запрос делать не надо (особенно удобно если мюскль сидит на удаленном сервере), что и ведет к увеличению производительности. У этого плагина весьма простой api и его удобно настроить, результаты ощутимые. Можно еще использовать memcache, но у меня лично он не так быстро работал.
Минусы таких решений конечно это:
- Обновление закэшированных данных, нужно следить за своевременной очисткой кеша в случае обновлений в базе.
- Нестандартность конфигурации пхп.
- Требования к доп. обьему памяти.

Логика такова:
PHP:
if( xcache_isset("menu") ) {
    
    $menu = xcache_get("menu");

} else {

    $menu = ...SQL QUERY....
    xcache_set($menu, "menu");

}
 

mak_sim2001

Новичок
К вопросу об оптимизации...
Немогу понять зачем два запроса если меню не из тысяч пунктов - подпунктов то лучше делать один запрос и использовать css javascript.
А также хранение в двух таблицах?
Храни в одной id, parent_id, ...
 

FractalizeR

Новичок
Вы так говорите, как будто открыли Америку. Той же самой функциональностью обладает, например, APC, который станет частью PHP6. И это не плагин, а расширение PHP.
 
Сверху