@banny_name

Какие преимущества хранения сессий в бд?

Пару человек сказало, что хранение сессий в бд, это наилучший вариант( если нужно длительное хранение сессий ), в чем преимущество?
мне ответили в гибкости, но где работа с сессиями становится более гибкой, мне непонятно...

Подскажите пожалуйста, в чем + и -
  • Вопрос задан
  • 6346 просмотров
Решения вопроса 2
copist
@copist
Empower people to give
Сессию в базе хранят на тот случай, если там есть что-то ценное.
Например, есть конструктор сайтов или социальная сеть. И пользователь может кое-что сделать ещё до регистрации, например, создать пост или профиль свой заполнить. Можно все его временные данные сериализовать и поместить в базу, чаще всего JSON в NoSQL.
В обычную сессию тоже можно сохранить, но обычно пространство для хранения сессий регулярно чистят и тогда данные потеряются.
Сохранять в базу стоит только тогда, когда пользователь сделал что-то. Для каждого пользователя выделять место в базе бессмысленно.
Когда пользователь авторизуется, временные данные переносят на постоянное место хранения.
Регулярно область сессий неавторизованных пользователей чистят, но гуманно, то есть не очень активно, с большим интервалом хранения.

Я обычно с другим сталкивался - данные из базы выгружают в сессию, чтобы меньше нагружать базу.
Вот схема: https://toster.ru/answer?answer_id=645494
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
в чем преимущество?

Нет преимуществ. Ваша пара человек не понимает о чем говорит.

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

Сессия как правило - это необходимые горячие данные пользователя, что нужно сохранить между запросами. БД - одно из самых медленных хранилищ этих данных.

В файлах кстати тоже не стоит хранить. При большой нагрузке io будет подтормаживать.

Длительный период сессии обычно не хранятся, вместо этого на клиент задается токен, по которому человек через много времени может автоматически авторизироваться.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@DrImp
Преимущество простое, если сайт высоконагруженный, то у него может быть несколько бакендов на разных серверах, на которые балансируется нагрузка. И если хранить сессии в файлах, то юзера будет разлогинивать при переключении сервера.

Еще удобно связывать сессию с конкретным юзером в БД. Можно вводить ограничения типа "нельзя быть залогиненым с двух браузеров", удобно для онлайн игр.

Или дать функционал "Разлогинить меня на всех устройствах".

И еще наверняка куча вариантов.
Ответ написан
Комментировать
@eskrano
по моему ничем. Зайдет к тебе 15к юзеров в день и у тебя +15к записей в бд... Лично мое мнение.
Ответ написан
@theMacros
By default session data are stored in files. The implementation is locking a file from opening a session to the point it's closed either by session_write_close() or at the end of request. While session file is locked all other requests which are trying to use the same session are blocked i.e. waiting for the initial request to release session file. This is fine for development and probably small projects. But when it comes to handling massive concurrent requests, it is better to use more sophisticated storage, such as database.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы