вопросы производительности php по хранению объекта пользователя в сессиях - PullRequest
0 голосов
/ 20 мая 2011

У меня есть пользовательское веб-приложение, которое я собираю.Система создает объект пользователя при входе в систему, а затем сохраняет его в массиве сеансов.На каждой странице загрузки система проверяет данные сеанса по ключу сеанса, хранящемуся в базе данных, и проверяет, были ли изменены какие-либо данные, относящиеся к пользователю (флаг bool в таблице пользователя).Если данные были изменены, пользовательский объект воссоздается, в противном случае я использую тот, который хранится в сеансах.Это выглядит примерно так:

session_start();
if (isset($_SESSION['name']))
{
 $flags = get_session_flags($_SESSION['session_key']);
 if (!$flags['valid_session_key'])
 {
  logout();
  redirect_to_home();
 }
 if ($flags['user_data_changed'])
 {
  $user = recreate_user_object();
 }
 else
 {
  $user = $_SESSION['user'];
 }
}

Мои опасения связаны с производительностью сервера php / mysql.С какими возможными проблемами я могу столкнуться при хранении объекта пользователя между загрузками страниц?Должен ли я просто всегда получать свежие данные из БД?Это значительный объем информации, включая несколько объектов, основанных на действиях, которые хранятся внутри объекта пользователя.

Спасибо за помощь.

1 Ответ

0 голосов
/ 20 мая 2011

Система создает объект пользователя при входе в систему, а затем сохраняет его в массиве сеансов.

Что представляет собой объект пользователя?Какую часть объекта User вы будете использовать?Вам постоянно нужны все данные, которые она предлагает?

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

Как часто обновляются данные пользователя?Если он обновляется только на нескольких страницах, то проверка каждой загрузки страницы выглядит немного.Предыдущий вопрос все еще остается в силе, поскольку он представляет собой восстановление объекта User.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...