Хранение данных в сессии

simpex

Новичок
Хранение данных в сессии

Вопрос

данные сайта запиханы в 10к таблиц
например
таблица юзеров сожержит логины и пароли
таблица прав содержит их права
и т.д

вопрос
использование сессии для хранения данных это хорошее решение?
или плохое

т.е. в самом начале когда юзер авторизуется я делаю селект по 10 таблицам

и сохраняю полную инфу о юзере и что ему доступно в сессию

обращаюсь потом к данным
if($_SESSION['data']['can_vote']==1){
разрешаем юзеру голосовать
}

т.о. я попытался избавиться от 10ка лишних селектов из базы в разных местах


чем черевато хранение данных в сессии? стоит ли волноваться или наоборот это самое верное решение?
 

HraKK

Мудак
Команда форума
Ничем особым не чревато. Используй.

Только 10к таблиц - это извините похоже на бред.
 

korchasa

LIMB infected
Re: Хранение данных в сессии

чем черевато хранение данных в сессии? стоит ли волноваться или наоборот это самое верное решение?
Хранение любой копии данных чревато необходимостью синхронизировать эти копии.
Тут два случая:

1. Пользователь сам меняет данные о себе
Все просто, т.к. у нас есть его сессия. Мы обновляем данные в БД, и в сессии.

2. Данные о пользователе меняет кто-то другой (например, админимстратор банит пользователя), в тот момент, когда пользователь уже залогинен. Тут все сложнее, но есть варианты:

2.1. Мы забиваем на то, что данные валидны в пределах сессии, и пользователь не "забаниться" пока не войдет заново.
2.2. Мы каким-нибудь способом получаем доступ к сессии, и обновляем по факту изменения. Тут все зависит от того, как ты хранишь сессии. Все легко и просто, если они в БД - просто добавляем в таблицу сессий id пользователя (если его там нет).
2.3. Мы выставляем куда-то заявку, что пользователь такой-то - устарел, и пользователь сам читает эту информацию(on demand). В общем шило на мыло, но во-первых этих заявок меньше, чем пользователей, а во-вторых их можно смело кинуть в какое-нибудь быстрое хранилище, типа memcache или APC.

Автор оригинала: HraKK
Только 10к таблиц - это извините похоже на бред.
Хм, не я один значит так прочитал :)
 

dr-sm

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

Фанат

oncle terrible
Команда форума
"десяток" с данными одного юзера - это тоже странно.
тем более - запросов.

вот у вас, участников дискуссии, сколько запросов уходит на получение инфы о юзере?
 

simpex

Новичок
я разделил базу так
одна таблица users отвечает за login пароли мыло имя ники дата регистрации город страна

2я содержит дополнительную информацию о юзерах вроде
его настроек, больших полей text - где он пишет информацию о себе и прочего
id в юзерс = id в таблице информации



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

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
сейчас хочу по максимуму закешировать страницы
чтобы из базы ничего не подгружалось
Зачем в сессию пихать то, что в 99% случаев юзеру не понадобится?
 

simpex

Новичок
я имел в виду хранить целые сгенерированные страницы в файлах
без базы, и при необходимости обновлять
 
Сверху