这个问题与这个问题相似,但有一个转折(因此旧问题接受的答案在以下情况下无效)
我有一个卖票的网站(PHP/MYSQL)。假设我只剩下一张票:
- 买家 A 将票放入她的购物车并转到支付网关页面(即贝宝)
- 门票锁定5分钟,买家B无法购买
- 买家 A 等待 5 分钟,paypal 页面打开,什么也不做
- 票已解锁,因此买家 B 将其放入购物车并进入 paypal 页面
- 买家A在paypal上执行支付程序成功
- 买家B在paypal上执行支付程序成功
我可以等待更长的时间,但我认为这不会在更一般的情况下解决问题。此外,如果我这样做,将有可能进行某种 DoS,将物品长期锁定在库存中。
处理这种情况的最佳方法是什么?