我有一個購物車應用程序,其中帶有唯一物品,數量爲1 - 當用戶將一個物品放入購物籃時,我需要耗盡庫存數量以避免其他人購買。問題是,如果他們放棄購物車而沒有購買,我需要把物品放回庫存。PHP在會話過期時運行一個腳本
當購物車會話過期時,我可以補充庫存嗎?即運行一個腳本來替換庫存。
我有一個購物車應用程序,其中帶有唯一物品,數量爲1 - 當用戶將一個物品放入購物籃時,我需要耗盡庫存數量以避免其他人購買。問題是,如果他們放棄購物車而沒有購買,我需要把物品放回庫存。PHP在會話過期時運行一個腳本
當購物車會話過期時,我可以補充庫存嗎?即運行一個腳本來替換庫存。
您可以使用session_set_save_handler
來創建自定義會話處理類。 當你這樣做時,你可以決定在垃圾收集器被調用時或者在會話銷燬時需要運行的其他操作。如果您決定使用垃圾收集器,請確保您也知道session.gc_divisor
和session.gc_probability
的值,並瞭解它們的作用(這些設置垃圾收集器將運行的可能性)。
這就是我們要去的謝謝 –
@jimsmith我很高興它有幫助 – mishu
創建數據庫表以跟蹤會話活動,比如sessions
。其中至少要輸入session_id
和DATETIME或TIME字段last_activity
。
如果你沒有這樣做了,也創造了一個carts
表中包含車的內容(如product_id
和quantity
),並有一個鏈接到session_id
。然後,有兩種情況:
carts
表中的行。last_activity
的值是否超過您希望的值(比如說一個小時以前)。使該腳本以購物車中的數量重新存儲您的供應。請注意,您需要更新bootstrap/loader(在每個加載的頁面上觸發的機制)中的last_activity
字段。
爲了避免cron作業的需要;保持簡單:
(time() + (60*20))
(這需要您更新某種數據庫過於「最後活動」)
應該是相當直截了當。
這樣做似乎有點奇怪。例如,我可以將所有商品添加到我的購物車中。如果你的正常會話是20分鐘,你將不會有20分鐘的股票。當有人退房時,爲什麼不直接取出呢?然後,您也可以點擊退房時進行支票,以確保它仍在庫存中。 –
我不會在將它們放入購物車時將其從庫存中移除,但只有在實際購買時纔會將它們從庫存中移除。 – Gumbo
謝謝,我同意,但這不是我的決定! –