Я использую класс Session CodeIgniter для управления своими сессиями в системе корзины / оформления заказа. Данные сеанса хранятся в базе данных, а идентификатор сеанса сохраняется в файле cookie. Вся информация о корзине извлекается через AJAX и сохраняется в сеансе вместе с идентификатором сеанса.
Сейчас я использую идентификатор сеанса, который генерирует PHP / CodeIgniter для отслеживания пользователей. Пользователи не входят на сайт, а магазин и система корзины / оформления заказа находятся в разных доменах, поэтому это единственное, что привязывает их к своей корзине, которая хранится в сеансе / базе данных. Я использую этот идентификатор сеанса в скрытых полях в формах и в качестве параметра в ссылках, чтобы он отправлялся на сервер по любому запросу (добавить элемент, удалить элемент, просмотреть корзину и т. Д.) *
CodeIgniter позволяет вам установить время для регенерации идентификатора сеанса, прямо сейчас у меня установлено 10 минут. У меня было значение по умолчанию, но оно было слишком коротким, потому что, если пользователь сидел на странице слишком долго, идентификатор сеанса, который динамически записывался в ссылки и формы, был бы устаревшим и больше не привязывался к данным их корзины. 1005 *
Это явно не лучшее решение. Каков наилучший способ разрешить восстановление идентификаторов сеансов с меньшим интервалом, но при этом держать пользователей привязанными к своим данным корзины, даже если пользователь ждет 10+ минут (без обновления страницы), чтобы выполнить действие?