бездействие пользователя php

iolke

Новичок
Здравствуйте
Как на php, без JavaScript решить вопрос - если в течении 5 минут пользователь бездействует, то ссылка становится не активна.
 

iolke

Новичок
Какой параметр сессии за это отвечает? И как обойтись без изменений в .ini
 

iolke

Новичок
Такой код годен только, если пользователь сделает действие, только в этом случае он увидит, что сессия разорвана, а как бы так его ознакомить типа рефрешом

<?php session_start();
if (!isset($_SESSION['LAST_ACTIVITY'])) {

$_SESSION['LAST_ACTIVITY'] = time();
}
if (time() - $_SESSION['LAST_ACTIVITY'] > 60) {

//session_destroy();

} else {

$_SESSION['LAST_ACTIVITY'] = time();

}
 

iolke

Новичок
Если пользователь добавляет товары в корзину, и после этого не оформляет заказ и не закрывает браузер, то какое условие для очистки корзины???
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
1. корзину обычно делают в базе, а не в сессии
2. а зачем пользователю узнавать о чем-то до того, как он этого захотел и перешел на сайт?
3. следовательно, зачем вообще чистить корзину?
 

iolke

Новичок
Корзина в бд само собой, пользователь положил товары и ушёл на 3 часа, корзина висит,открытая. Мне нужно её очистить например если пользователь бездействует в течении часа и вернуть товары в продажу
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Фактом резервирования товара является оформление заказа, а не факт откладывания его в корзину. Корзину можно чистить через cron
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
корзину вообще не надо чистить никогда - люди просто набирают десятки товаров, потом смотрят и выбирают, ждут зарплату, потом офорляют заказы на часть товаров из корзины, а часть остается висеть в корзине
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
В итоге имеем кучу мусора, и заказы уже несуществующих товаров, ну да
 

iolke

Новичок
Чистить необходимо! Мой продукт - годен 12 часов и я не могу позволить, чтобы он был потенциально куплен. Выходишь из сессии, теряешь корзину - такая задача. Как ???
 

artoodetoo

великий и ужасный
При попытке совершить чекаут ваш товар из корзины должен проходить валидацию. Вот в этот момент и сигнальте что-то там покупателю. А если ошибок нет, то и беспокоиться не о чем.

"Мусор" в базе вообще не аргумент. Не байты важны, а деньги.

Вывод: чистить корзину не надо. Наоборот, непустая корзина должна быть вашей целью.
 

iolke

Новичок
У меня специфика, я не могу держать продукты по корзинам пользователей, выбирая продукт в корзину - продукт становится не доступен другим покупателям . Это проблема ! Мне нужно снова вернуть продукт в продажу если его не купили и он лежит в чьей то корзине.
 

iolke

Новичок
И как быть если он использует не стандартный чекаут, например закрыл окно или просто ушёл чай пить на 10 часов - как????
 

artoodetoo

великий и ужасный
Проблема не в том, что покупатель может отвлечься, а в том, что вы меняете доступный остаток товара в неподходящий момент. Это вредит бизнесу.
 

Yoskaldyr

Новичок
Партнер клуба
это не просто вредит, а может убить бизнес, если попадутся "добрые" конкуренты
 

AnrDaemon

Продвинутый новичок
Чистить необходимо! Мой продукт - годен 12 часов и я не могу позволить, чтобы он был потенциально куплен. Выходишь из сессии, теряешь корзину - такая задача. Как ???
Ещё раз для тугих на ухо: корзина на сайте - это не корзина в супермаркете.
На сайте аналог корзины супермаркета - это оформленный заказ.
А корзина - это просто набор ссылок на страницы, не более.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
В итоге имеем кучу мусора, и заказы уже несуществующих товаров, ну да
ох беда-беда-огорчение, таблица корзины займет 10 мегабайт на диске! и принесет продаж на несколько тысяч долларов.
так работают взрослые ecommerce, когда нужна выручка, а инженеры со своими абстрактными моделями в вакууме выполняют задания
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
У меня специфика, я не могу держать продукты по корзинам пользователей, выбирая продукт в корзину - продукт становится не доступен другим покупателям . Это проблема ! Мне нужно снова вернуть продукт в продажу если его не купили и он лежит в чьей то корзине.
не хочу учиться - хочу денег
учебники для лохов, лучше устроиться на работу и вопить на форуме, чтобы рассказали как что делать, чтобы не уволили )))

Сайт - это распределенная система, он подчиняется "CAP-теореме". Традиционный сайт, который работает по HTTP - это AP-модель, он не может обеспечить консистентность состояния корзины при действиях разных пользователей.
Тебе нужна CP-модель - например, блокировать товар, и поддерживать постоянную связь браузера с сервером по web sockets. Если юзер отвалился по разрыву связи - разблокировать товар для других пользователей.
Это уже не сайт, а web-приложение. Вперед, учи ECMA и vue/react. А что, думал, в сказку попал? )
 
Сверху