[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Результаты запроса в сессии
Arh
Подумываю хранить результаты некоторых запросов в сессии.
Может кто разъяснит чем это чревато?

Структура сайта примерно такая
1) Подключается к базе
2) Создаётся массив $Conf с конфигурационными данными (SELECT * FROM config)
3) Создаётся массив $Access с правилами доступа для пользователя (SELECT * FROM access WHERE user = '1')
4) Может быть будет еще 1 запрос связанный с модулями, но суть не в том какие запросы.

Суть в том, что есть участок кода с несколькими запросами, несколькими форычами и разными плюшечками.
Все это для того чтобы создать массивы, которыми приходиться много раз пользоваться в процессе. Тоесть этот код 1 раз отработал и потом никаких SQL делать не надо, это всё хорошо, но он будет отрабатывать при обновлении страницы, при f5.

А мысль в том, чтобы хранить эти массивы в сессии, то есть вместо $Access, будет $_SESSION['Access'], что бы при обновлении страницы или переходе на другую не приходилось опять запрашивать данные из базы, строить из них массив и как то корректировать.

Какие могут возникнуть проблемы? Например какие то ограничения на хостингах? Есть мысли?

Да, в каждом массиве ключей может быть от 1 до 300, может и больше но врятли, скорее не больше 100.

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



Спустя 1 минута, 57 секунд (12.09.2012 - 11:33) Игорь_Vasinsky написал(а):
а про memcache не слыхали? всё давно придумано.

Спустя 1 минута, 3 секунды (12.09.2012 - 11:34) Arh написал(а):
Цитата (Игорь_Vasinsky @ 12.09.2012 - 08:33)
а про memcache не слыхали? всё давно придумано.

Это подключаемый модуль на уровне сервера?

Спустя 59 минут, 21 секунда (12.09.2012 - 12:33) inpost написал(а):
Arh
Мемкеш не нужен тебе сейчас, достаточно обычного файлового кеширования результата работы. Обработал запрос, создал cache1.tmp файл. Всё, далее его дёргай через file_get_contents и получай всё то, что выполнил ранее.
Но тут уже другой вопрос, действительно ли эти данные так долго выполняются, что их стоит кешировать? Или лучше индексы в БД поставить, чтобы быстро работал данный участок кода и всё?!

Спустя 3 часа, 38 минут, 36 секунд (12.09.2012 - 16:12) Arh написал(а):
Реализовал на сессиях, скорость как и ожидалось увеличилась, но на столько не заметно, что и правда лучше индексы проставить и забыть пока что.

Спустя 15 минут, 30 секунд (12.09.2012 - 16:27) inpost написал(а):
Arh
Вопрос на засыпку. В access мы указываем права, включая забанен ли пользователь или нет, по крайней мере так логично, как пользователя забанить, если информация о том, что он не забанен у него в сессии?! smile.gif

Спустя 2 дня, 2 часа, 13 минут, 31 секунда (14.09.2012 - 18:41) Arh написал(а):
inpost
smile.gif проблема "1"

Спустя 3 часа, 34 минуты, 49 секунд (14.09.2012 - 22:16) inpost написал(а):
Arh
Да, так и есть. В итоге необходимо будет при каждой загрузке страницы обновлять сессию, а значит запроса в БД не избежать!


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.