この質問はこの質問に似ていますが、ひねりがあります(したがって、古い質問に対して受け入れられた回答は、次のシナリオでは無効です)
私はチケットを販売するためのサイトを持っています (PHP/MYSQL)。チケットが 1 つだけ残っているとします。
- 買い手 A はチケットをカートに入れ、支払いゲートウェイ ページ (つまり、paypal) に移動します。
- チケットは 5 分間ロックされるため、購入者 B は購入できません。
- 買い手 A は、PayPal ページを開いたまま 5 分間待機し、何もしません。
- チケットのロックが解除されたので、購入者 B はチケットをカートに入れてペイパル ページに移動します。
- 買い手Aがpaypalで支払い手続きを行い成功
- 買い手Bがpaypalで決済手続き成功
もっと長く待つことはできますが、より一般的なケースではこれで問題が解決するとは思いません。さらに、そうすると、ある種の DoS が行われ、アイテムの在庫が長期間ロックされる可能性があります。
このシナリオを処理する最善の方法は何ですか?