Хранение переменных в $_SESSION

zarus

Хитрожопый макак
Хранение переменных в $_SESSION

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

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

Фанат

oncle terrible
Команда форума
сессия служит для персонализации контента.
во всех остальных случаях она вредна.
 

zarus

Хитрожопый макак
Автор оригинала: Фанат
сессия служит для персонализации контента.
во всех остальных случаях она вредна.
Хорошо, есть менюшки, которые генерятся в зависимости от прав доступа пользователя - этого достаточно, чтобы хранить меню в сессии, или?

Все же я бы хотел услышать технические за и против, вроде - "запрос в БД замет времени Х, а восстановление объекта - Y времени/ресурсов".
Да, есть меню, которые не зависят от прав доступа, но они хранятся в отдельном xml файле.
 

Фанат

oncle terrible
Команда форума
запрос в БД замет времени Х
ты действительно хочешь спросить у НАС, сколько времени занимает ТВОЙ запрос к ТВОЕЙ бд?
Ты хорошо подумал?

В таком случае, ответ однозначный.
Если ты не знаешь, сколько времени у тебя у тебя исполняется запрос, оптимизировать скрипт не надо.
 

zarus

Хитрожопый макак
2Фанат.
Можно я приведу схему сборки страницы, а ты скажешь, где логика хромает.

Есть основная иерархическая таблица "страниц". Основные смысловые параметры - id, parent, path, access.
Access - это набор групп доступа.
path - md hash полного пути к странице от корня

Пользователь запрашивает страницу, соотвественно, если это первый заход, проверяются его права доступа.

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

з.ы. Что-то мне подсказывает, что 2й вариант лучше всего.
 

Andreika

"PHP for nubies" reader
zarus
что такое права доступа? и почему они проверяются один раз?
 

zarus

Хитрожопый макак
Автор оригинала: Andreika
zarus
что такое права доступа? и почему они проверяются один раз?
Иерархическая таблица. Они не проверяются один раз, просто при логине пользователя строится полный список прав доступа.
Например, есть иерархия
root
|-support
| |...
|-user
|...
Если у пользователя право доступа root, то ему достраивается полный набор - support, user и т.д. Если support, то все, что ниже.

Например, для доступа к странице требуется доступ user, у root доступ будет, у support уже не будет.
 

Andreika

"PHP for nubies" reader
и чем тут база грузится? что мешает не хранить ничего в сессии (и уж тем более само меню), а проверять все это каждый раз?
 

zarus

Хитрожопый макак
Автор оригинала: Andreika
и чем тут база грузится? что мешает не хранить ничего в сессии (и уж тем более само меню), а проверять все это каждый раз?
Обилие пользователей, запрашивающих одну и ту же информацию из базы. Вся задача сводится к псевдо-кэшированию.
Да и вообще, я не знаю, что мне мешает. "Горе от (не)ума" может быть? ))

з.ы. Дальнейшее обсуждение кажется мне нецелесообразным, я уже пришел к выводам.
 
Сверху