2013-03-15 68 views
0

客戶轉到購物車。 購物車被添加到數據庫,因爲它需要由外部服務支付。 5分鐘後你會如何刪除購物車?等待輸入時超時頁面的好方法?

我曾考慮打印「訂單將在5分鐘內重置」,然後發送ajax請求到一個腳本,該腳本將睡眠5分鐘,然後取消訂單。

有沒有更好的方法?它肯定比每5分鐘運行一次cron要好。

回答

2

向長時間運行的腳本發送一個ajax請求聽起來像個壞主意。你可能會運行很多睡眠腳本,這會阻塞你的服務器。

cron工作並不是一個壞主意。它可以定期通過數據庫查找過期的購物車。

如果到期查詢很快,可以更頻繁地運行,例如,每當有人添加東西到購物車,或有人試圖結帳時。

另一種方法是將過期的籃子放在db中。當用戶嘗試結帳時,您會在此時檢查到期日,讓用戶知道已過期並將其刪除。過期的籃子因爲用戶永遠不會回來而不會被移除,可以在每日/每週的整理工作中移除。

1
  1. 第一,永遠讓用戶知道是怎麼回事,所以打印「命令將在5分鐘內重置」是一個偉大的想法
  2. 我認爲更好的方式來做到這一點是設置一個Cookie,到期後5分鐘
  3. 然後......當/如果cookie到期,你的企業取消訂單:)

希望幫助!

1

保持一個PHP進程等待是一個非常糟糕的想法......它消耗了大量的系統資源和它的不可擴展性。

cron-job可能需要更多的努力才能實現,但從長遠來看,它會對您有所幫助。

1

我會做什麼,在數據庫行中設置expire_time。如果他們的下一個請求已經過去了。如果他們在這段時間後回到籃下,請刪去籃子。

如果沒有別的辦法,運行該cron來清理每天都在放棄的籃子。