Збереження стану сеансу на стороні сервера (шаблон проєктування)

Збереження стану сеансу на стороні сервера (англ. Server Session State) — шаблон проєктування, який пропонує зберігати стан сеансу на стороні сервера.

Опис ред.

При реалізації клієнт-серверної архітектури необхідно реалізувати передачу даних між обома сторонами. При цьому варто зберігати інформацію про сеанс.

Даний шаблон пропонує зберігати стан сеансу на стороні сервера. Таким чином, об'єкти сеансу зберігаються в колекції, в оперативній пам'яті серверу, та індексуються за допомогою ідентифікатора сеансу, який передає клієнт.

Переваги та недоліки ред.

Переваги ред.

  • Можна миттєво відновити сеанс
  • Розмір куки менший
  • Висока надійність. Інформація про користувача прихована на сервері
  • Можна збільшувати розмір сесії не змінюючи розмір куки

Недоліки ред.

  • Викликає навантаження на сервер, оскільки йому доводиться зберігати стан усіх клієнтів
  • Якщо сервер виходить із ладу, сесії усіх клієнтів втрачаються
  • Важко обмінювати стан сесії при наявності реплікацій вебсервера

Реалізація ред.

Нехай користувач вводить свою електронну пошту та пароль. Тоді такі дані можна зберігати на сервері за допомогою сесій.

session_start();

$_SESSION["user"] = GetFromPost();

print_r($_SESSION);

function GetFromPost() 
{
        $user = new User();
        $user->email    = $_POST['user_email'];
        $user->password = $_POST['user_password'];
        return $user;
}

Див. також ред.

Джерела ред.