2011-12-24 26 views
0

私はバス用の電子チケットサイトを構築しています。私はここで問題に直面しています:ユーザーが座席番号でチケットを予約するとき、私はその座席番号でデータベースを更新しました。今度は彼が窓を閉めて予約しないとどういうことを知りたいのですか?時間の経過後に彼のセッションが満了すればよいですか?一時チケット予約

答えて

4

私は彼が予約を確認した後にセッションを選択しデータベースにコミットします。

+0

ええと...良いアイデア。 Thanks Gigi – AssamGuy

0

@Gigiのソリューションは合理的なものですが、完全ではありません。

お客様が選択した座席は何らかの形で予約する必要があります。そうしないと、同時に訪れた別の訪問者が同じ座席を予約する可能性があります。

最初に予約したビジターに予約されている時間(たとえば10分)を設定できます。この時間中、ビジターは予約を完了することができます(つまり、支払いと配送のデータを入力します)。その時点で、彼らが表す座席がその顧客に「所属している」ため、再度解放してはならないことを示す適切なフィールドを更新します。

予約ジョブが10回以上予約されているシートを解放する(たとえば、ページビューごとに、または利用可能なシートがあるかどうか、またはcronジョブによってチェックされるたびに)削除ジョブを実行することができます分前に予約が完了していません。

1

これは発券や小売サイトでよく発生する問題です。ユーザーが経験することの多いジレンマは、アイテムを購入したとき(低い在庫で)、特定のシートを予約したときにのみ、リソースが使用できなくなったことを確認することです。

With購入プロセス中のリソースを追跡することに目を向けると、一時的な 'temp_transaction'データベーステーブルを実装して、コードがユーザーが予約の過程にあるかどうかを判断するために参照できる適切な習慣を実装することをお勧めします。

一時的なデータの支払い、検証、および検証が行われると、メイン 'トランザクション'テーブルへのコミットが行われ、 'リソース'(座席)テーブルが確定データで更新されます。

このアプローチを使用すると、並行トランザクションのアカウンティングと、ユーザー・アクティビティおよび/またはリソース・ステータスのポイント・イン・タイム監査が可能になります。

+0

@CodeCasterで猶予期間を設けることをお勧めします。リソースを無期限に縛らずに(つまり販売を失うことなく)予約している間、ユーザーはリソースに優先順位を付けることができます。これは、cronを必要とせずに一時テーブルの実装で実現できます。 – venzen

関連する問題