Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
132 of 152 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

Таблица oc_session

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

Поля

Поле Тип данных Описание
session_id varchar(32) Уникальный идентификатор сессии (Session ID). Генерируется при первом визите пользователя и хранится в cookies браузера.
data text Данные сессии в сериализованном виде. Здесь хранится содержимое корзины, данные для авторизации, временные данные формы и другая служебная информация.
expire datetime Время истечения срока действия сессии. По этому времени система определяет, нужно ли удалять сессию как устаревшую.

Как это работает

При первом посещении сайта для браузера пользователя генерируется уникальный session_id, который сохраняется в cookie. Этот идентификатор передается с каждым запросом к серверу. Сервер, получив идентификатор, находит соответствующую запись в таблице oc_session и загружает все сохраненные данные сессии (поле data) в память.

В течение сессии в этих данных хранится критически важная для работы магазина информация:

  • Содержимое корзины покупок (товары, их количество, опции)
  • Купоны, скидки и акции, примененные к заказу
  • Данные авторизации пользователя
  • Введенные данные при оформлении заказа (до момента его подтверждения)
  • Язык и валюта, выбранные пользователем

Поле expire обновляется при каждом обращении к сессии. Стандартное время жизни сессии в OpenCart обычно составляет 3600 секунд (1 час). Если в течение этого времени пользователь не совершает никаких действий на сайте, его сессия истекает и удаляется системой очистки (cron). При этом содержимое корзины и другие временные данные будут потеряны.

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

Пример SQL-запроса

Посмотреть активные сессии и их данные можно следующим запросом:

SELECT session_id, expire, data FROM oc_session WHERE expire > NOW() ORDER BY expire DESC;

Очистка устаревших сессий (обычно выполняется автоматически через cron):

DELETE FROM oc_session WHERE expire < NOW();

Смотрите также

  • таблицу oc_customer,
    которая хранит данные зарегистрированных пользователей
  • таблицу oc_cart,
    которая в некоторых версиях может хранить корзину пользователя