Как компенсировать задержку?

на сайте есть магазин, в нем есть товары. Из за большой посещаемости сайта, товары в магазине скупают очень быстро и бывает такое, что один товар одновременно покупают 2 человека. Проверка на то, куплен товар или нет присутствует, но из за микрозадержки обновления в базе данных получается что товар покупается у двоих людей. Как быть?
  • Вопрос задан
  • 1237 просмотров
Пригласить эксперта
Ответы на вопрос 4
freevital
@freevital
Full-Stack Web Developer
Ответ написан
Комментировать
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Надо при добавлении в корзину, его не только проверять на наличие, но и списывать (или резервировать), потом возвращать, если не была совершена покупка
Ответ написан
@Niomin
В момент покупки товара использовать транзакцию и запрос вида select for update
Подробно расписано в документации
Ответ написан
Комментировать
SV0L0Ch
@SV0L0Ch
Разработчик специализируюсь на Bitrix и Wordpress
Можно настроить, чтобы товар которого осталось менее N штук не был доступен к покупке или помечался как-то типа "остатки на складе - неизвестно". В этом случае при приближении к минимуму пользователь просто не сможет добавить товар в корзину вместо облома при оформлении заказа или по крайнем мере будет готов к этому облому, понимая, что товара уже может не быть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы