500 переменных в сессии

storng

Новичок
500 переменных в сессии

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

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
вопрос только, нафига?
 

storng

Новичок
в сессиях хочу хранить авторизацию определённых участков сайта.

Т.е. популярный портал, есть группы пользователей (бег, плавание и т.п) они могут быть закрыты, а пользователь может иметь к ним доступ, что бы на каждой странице этой группы не лазить в базу для авторизации, достаточно один раз сходить и в сессию поместить флаг авторизации, но т.к. групп тьма тьмущая, то и переменных авторизационных может быть тоже много.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
storng
А теперь подумай, ситуация...
Есть абстрактный юзер, у него есть открытые ему разделы, потом бац - ему требуется срочно закрыть доступ, а все данные у него в сессии уже, и?
Не мучай мозг себе, лазай в базу.
 

mity

Новичок
К сесии, вроде, может одновременно обращаться только один скрипт. Поэтому что если у Вас вывод картинок или AJAX будет привязано к сесии, то на медленных скриптах может быть замедление работы. За счёт того что скрипты будут выполнятся не параллельно, а последовательно.

А потом у Вас такой большой портал с огромной нагрузкой? Не заморачивайтесь сделайте как Вам проще, а затем когда нагрузка реально возрастёт и пробуйте перенести данные сесий в другое место, например в базу данных.
 

storng

Новичок
Автор оригинала: c0dex
storng
А теперь подумай, ситуация...
Есть абстрактный юзер, у него есть открытые ему разделы, потом бац - ему требуется срочно закрыть доступ, а все данные у него в сессии уже, и?
Не мучай мозг себе, лазай в базу.
У него в сессии будет только флаг доступа к тому или иному разделу, если нужно запретить пользователю, просто меняем программно ему флаг доступа и всё, больше не войдёт.
По поводу базы - она бедная и так напрягается кучей других обработок, а если ещё на каждой странице раздела ходить в БД для получения роли, совсем грустно становится :)

-~{}~ 22.04.10 14:42:

Автор оригинала: mity

А потом у Вас такой большой портал с огромной нагрузкой? Не заморачивайтесь сделайте как Вам проще, а затем когда нагрузка реально возрастёт и пробуйте перенести данные сесий в другое место, например в базу данных.
мне проще через сессии, собственно и вопрос возник, не будет ли всё сильно тормозить, если у пользователя в сессиях будет штук 500 переменных :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
блин, значит чтобы закрыть ему доступ надо флаг поменять? А если флаг у тебя этот присвоен еще n-юзерам?

Я правда не знаю как ты там собрался организовывать все это в БД, что за флаги у тебя там, но чувствую, что у тебя уже сейчас в плане реализации - каша, если возникают такие дикие позывы писать по 500 переменных в сессию. Которая по идее то от БД сильно и не отличается. А если у тебя потом будет 2000 категорий?
 

storng

Новичок
Автор оригинала: c0dex
блин, значит чтобы закрыть ему доступ надо флаг поменять? А если флаг у тебя этот присвоен еще n-юзерам?

Я правда не знаю как ты там собрался организовывать все это в БД, что за флаги у тебя там, но чувствую, что у тебя уже сейчас в плане реализации - каша, если возникают такие дикие позывы писать по 500 переменных в сессию. Которая по идее то от БД сильно и не отличается. А если у тебя потом будет 2000 категорий?
В данный момент я как раз и продумываю момент авторизации пользователей в разные категории сайта.
Основная авторизация выполнена нормально, уин в сессии из куки, но вот с категориями сайта я немного зарылся.

Подскажите вменяемый алгоритм авторизации для многочисленных категорий, который не будет грузить БД при серфинге пользователя по страницам закрытой категории сайта к которой у пользователя есть доступ.

Мне пришло в голову именно хранение в сессиях флага авторизации, т.е. один раз сходили в БД, получили роль, записали её в сессию и всё.
Но так как категорий может быть неограниченное количество - возник вопрос о нагрузках и большом хранении данных в сессиях, понимаю что получается криво, вот собственно и обратился, может быть боком удастся вменяемый алго придумать.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
storng
у тебя по фактической задаче, что ты привел - требуется табличка в БД, в виде id категории - id юзера (роли). Все, если такая строка есть - есть доступ, нету строки - нет доступа.

Хм, что здесь может тормозить я не знаю, нагрузку ты тоже не привел, при которой все тормозит. Можешь это все хоть в мемкеш запихать, на твой вкус
 

storng

Новичок
Автор оригинала: c0dex
storng
у тебя по фактической задаче, что ты привел - требуется табличка в БД, в виде id категории - id юзера (роли). Все, если такая строка есть - есть доступ, нету строки - нет доступа.

Хм, что здесь может тормозить я не знаю, нагрузку ты тоже не привел, при которой все тормозит. Можешь это все хоть в мемкеш запихать, на твой вкус
Ясно, в общем не буду тогда заморачиваться и изыскивать кривые решения, сделаю действительно табличку из нескольких полей, и при открытии любой страницы категории буду в самом начале ходить в БД в эту табличку (напишу функцию, которую буду вызывать в начале всех страниц категорий - если возвращает 1, то доступ есть, если 0 - то нету)

Всем спасибо за идеи и помощь :)
 

Dovg

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

storng

Новичок
Автор оригинала: Dovg
Есть мнение, что лучше кешировать табличку в быстрой памяти, чем класть "длинного" пользователя в сессию.
"кешировать табличку в быстрой памяти" не совсем понятно, как это можно реализовать?
 

AmdY

Пью пиво
Команда форума
скажется не сильно, можешь раньше времени не переживать
 
Сверху