如果我正在寫票務系統,客戶選擇票證,我想鎖定它3分鐘(如票務大師),直到他們完成訂單或時間用完爲止,我怎麼能做到這一點?我想避免讓客戶放棄他們的會話/應用程序崩潰,然後永久終止鎖定在數據庫中的票證。購物車超時
我爲我的ORM和C#使用nHibernate。
如果我正在寫票務系統,客戶選擇票證,我想鎖定它3分鐘(如票務大師),直到他們完成訂單或時間用完爲止,我怎麼能做到這一點?我想避免讓客戶放棄他們的會話/應用程序崩潰,然後永久終止鎖定在數據庫中的票證。購物車超時
我爲我的ORM和C#使用nHibernate。
只是有一個單獨的表,可以容納所有當前的預訂。例如:
**Reservations**
UserID
TicketID
ExpiryDate
這將不依賴於會話。您甚至不需要刪除過期記錄,即當新客戶查詢故障單時,查找所有可用的座位,而這些座位在expirydate> now的預訂表中不存在。
避免更復雜的定時事件系統和類似的事情,保持簡單。
擁有定期解鎖過期故障單鎖的故障單過期服務。 記錄到期時間和票證(可能使用會話ID)。 訂單可以在不再需要時刪除它,或者在發生失敗時它會自動解鎖。
如果你可以識別每張票,你可以給這張票分配鎖定信息,包含關於用戶,訂單等的數據,當然 - 時間戳會保存鎖定到期的時間。
如果另一個用戶想要選擇票證,則只需檢查此時間戳以查看鎖是否已過期。
這也是一個很好的解決方案。 – user1205641 2012-02-13 12:10:58