Создайте таблицу базы данных для отслеживания активности сеанса, скажем, sessions
. В нем укажите как минимум поля session_id
и поле DATETIME или TIME, называемое last_activity
.
Если у вас его еще нет, также создайте таблицу carts
, которая содержит содержимое корзины (например, product_id
и quantity
) и имеет ссылку на session_id
. Тогда есть 2 сценария:
- Пользователь завершает заказ, просто «стирает» строки в таблице
carts
, принадлежащие их сеансу.
- Пользователь покидает корзину, вызывает cronjob, который проверяет, больше ли значение
last_activity
, чем вы хотите (скажем, более часа назад). Заставьте этот сценарий пополнить запас на количество, которое было в корзине.
Обратите внимание, что вам нужно обновить поле last_activity
в загрузчике / загрузчике (механизм, который запускается на каждой загруженной странице).