購物車管理包含功能:提交商品到購物車、顯示購物車列表、刪除購物車里商品、修改購物車、清空購物車等等
1、 購物車的實現方式:
① 可以把購物車的數據,給存儲到 session 里面,一旦關閉瀏覽器,則商品數據就丟失;
②可以把購物車的數據,給存儲到 cookie 里面,可以長久的保存購物車里面的數據;
③可以把購物車的數據,給存儲到數據庫里面,可以長久的保存購物車里面的數據;
④可以把購物車的數據,給存儲到緩存里(memcache,redis),也可以長久的保存購物車的數據。
注:Session 可能會引起并發問題,如果腳本很短,這通常沒有問題。但如果腳本運行時間比較長,那就可能會產生問題。在現代 Web 應用程序開發中,有一個非常常見的情況,就是使用 AJAX 技術在同一個頁面內發送多個請求獲取數據。
如果這些請求都需要使用Session,那么第一個請求到達服務器后會取得 Session 鎖,其它請求就必須等待,所有請求將串行處理,即使它們彼此之間并沒有依賴關系。這將大大增加頁面的響應時間。
有一個方法可以避免這個問題,就是在使用完 Session 以后立即調用 session_write_close()方法關閉 Session。這樣 Session 鎖就會釋放,即使當前腳本還在等在處理。需要注意的是,調用該方法后,當前腳本就不能進一步操作 Session 了
2、實例:京東購物車的設置,如果用戶已經登錄,則把購物車數據保存到數據庫里面,如果沒有登錄,則把購物車的數據給保存到 cookie 里面,當登錄時,要判斷 cookie是否有購物車的數據,如果有,則把 cookie 里面的數據給移動到數據庫里面。
3、提交商品到購物車:在前臺模塊里新建一個 CartController 控制器,添加 addCart方法
下面用是php+redis實現的購物車單例類,可借鑒: