私のクライアントは、電子機器を販売する e コマース Web サイトを運営しており、製品が在庫よりも多く販売される状況がありました。これは、在庫が 1 つしかないときに 2 人のユーザーが同時に商品を購入した場合、一方のセッションが他方のセッションが開始する前にその商品を売り切れとして登録し終えないためです (したがって、1 つあると見なして通常どおり継続します)。左)プロセスの最初にチェックインがありますが。これには明らかにお金がかかり(チャージバック手数料、払い戻しなど)、消費者にとって不便です.
それで、これを修正する方法があるかどうか疑問に思っていましたか?プロセスの最初に「マーカー」を作成することを考えました。つまり、在庫をチェックし、売り切れの場合はそのようにラベル付けして、他のセッションが購入できないようにします。しかし、これはさらに問題を引き起こします。顧客側でプロセスの途中でキャンセルする原因となる何かが発生した場合 (停電など)、製品が販売済みとしてマークされていても、チェックアウト以降、実際には販売されていません。プロセスが終了しませんでした。これが続くと、製品の過剰在庫が発生します。第二に、別のセッションが販売済みとしてマークしている間に、セッションが在庫をチェックすることも可能です。したがって、2 番目のセッションが既に購入した場合でも、最初のセッションは続行されます。これにより、元の問題に戻ります。
データベース側でのテーブルのロックを検討していますが、それが最善のアイデアかどうかはわかりません。どんな提案でも大歓迎です!
ありがとう、ディップ