PHPとMySQLを使用してホテル予約ソフトウェアを作成しています。ほぼ完了しましたが、競合状態の問題が発生しました。たとえば、スタンダードルームは1つしか残っておらず、2人のゲストが両方を選択すると、両方が利用できることが表示されます。ゲストが支払い前に確認をクリックしたときに部屋をもう一度確認して修正しようとしましたが、それでも問題があります。また、最初に確認をクリックした人が部屋のステータスを保留にしようとしましたが、ゲストが支払いをしないことを決定した場合、またはブラウザを閉じた場合に、部屋のステータスを利用可能に戻す方法がわかりません。SOで答えを検索しましたが、明確な答えは見つかりませんでした。前もって感謝します
3701 次
2 に答える
14
1 つの解決策は、データベース内のテーブルに 2 つの列を追加することです。1 つの列はセッション ID またはユーザー ID、またはルームを提供されているユーザーのものです。2 番目の列は、そのオファーがいつ期限切れになるかを示すタイムスタンプです。
次に、アプリで、保留列のタイムスタンプが期限切れになっている会議室のみを表示します。(最初のタイムスタンプを 0 に設定すると、有効期限が切れてから開始されます。) ルームが選択されたら、列を再度確認します。そこに期限切れになっていないタイムスタンプがある場合、ユーザーは「申し訳ありませんが、遅すぎました」というメッセージを受け取ります。それ以外の場合は、タイムスタンプを 15 分間未来などに設定して続行します。
これは、旅行サイトやチケット購入サイトでよく見られますが、「これらの座席をさらに 14 分間保留します。それまでに取引を完了してください。さもないと、何とか解放されます。」
于 2012-10-11T05:12:05.570 に答える
1
私は保留中の状態にも行きます。このユーザーのセッション ID と一緒に状態を保存し、期限切れのセッション ID が関連付けられているすべての保留中の状態を削除する cronjob を持つことができます。
于 2012-10-11T05:12:17.770 に答える