Таблица 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,
которая в некоторых версиях может хранить корзину пользователя