1

Web サイトの開発に mysql InnoDB と struts2 を使用しています。ユーザーが製品を使用したい場合、インボックスに請求書が送信され、そのリンクを使用してお金を支払うことができます。

私が解決しなければならない問題は、ユーザーが 2 つのセッションでリンクを開き、両方の支払いを試みた場合、1 つのトランザクションのみを許可する必要があることです。また、許可されたトランザクションがブラウザの終了などの問題に遭遇した場合、事態はデッドロック状態になります。これを回避し、次のトランザクションを許可する必要があります。

これを達成する方法を教えてください。

4

1 に答える 1

0

デッドロックを防ぐために各セッションにライフタイムを追加する必要があると思います (銀行のサイトで使用されているものと同じように)。一意のセッション ID を使用してそれを行うことができます。すべてのセッションには修復期間があります。時間が経過すると、セッションは期限切れになります。

その場合、1 つのセッションがアクティブであれば、そのセッションへのすべての試行を拒否できます。セッションの途中でブラウザが閉じられた場合、セッションは有効期限が切れた後、自動的に期限切れになります。セッションの期限切れやブラウザの終了など、何らかの理由で支払いが行われなかった場合、ユーザーはリンクを再度クリックしてプロセスを再開できます。

それが役に立てば幸い、

于 2013-07-18T13:39:42.287 に答える