У меня есть приложение для корзины с уникальными элементами с количеством 1 – мне нужно истощить запас акций, когда пользователь кладет его в корзину, чтобы кто-то другой его не покупал. Проблема в том, что если они откажутся от тележки, не покупая, мне нужно вернуть товар на склад.
Есть ли способ, по которому я могу пополнить запас, когда закончится сеанс тележки? т.е. запустить скрипт, чтобы заменить запас.
Вы можете использовать session_set_save_handler
для создания настраиваемого класса обработки сеанса. Когда вы это сделаете, вы можете решить другие действия, которые должны выполняться либо при вызове сборщика мусора, либо при уничтожении сеанса. Если вы решили работать с сборщиком мусора, убедитесь, что вы также знаете значения для session.gc_divisor
и session.gc_probability
а также понимаете, что они делают (это задает вероятность запуска сборщика мусора).
Чтобы избежать необходимости работы cron; будь проще:
(time() + (60*20))
(Это требует, чтобы вы также обновляли какую-то «последнюю активность» в базе данных)
Должно быть довольно прямолинейно.
Создайте таблицу базы данных для отслеживания активности сеанса, например, sessions
. В нем поместите по крайней мере поля session_id
и поле DATETIME или TIME, называемые last_activity
.
Если вы этого еще не сделали, также создайте таблицу carts
которой содержится содержимое корзины (например, product_id
и quantity
) и есть ссылка на session_id
. Затем есть 2 сценария:
carts
принадлежащих их сеансу. last_activity
чем вы хотите, чтобы он был (скажем, больше часа назад). Сделайте этот сценарий повторно запасом вашего предложения с количеством, которое было в корзине. Обратите внимание, что вам нужно будет обновить поле last_activity
в вашем загрузочном / загрузчике (механизм, который запускается на каждой загруженной странице).