购物车管理:
包含功能:提交商品到购物车、显示购物车列表、删除购物车里商品、修改购物车、清空购物车等等
1、购物车的实现方式:
①可以把购物车的数据,给存储到 session 里面,一旦关闭浏览器,则商品数据就丢失;
②可以把购物车的数据,给存储到cookie 里面,可以长久的保存购物车里面的数据;
③可以把购物车的数据,给存储到数据库里面,可以长久的保存购物车里面的数据;
④可以把购物车的数据,给存储到缓存里(memcache,redis),也可以长久的保存购物车的数据。
注:Session 可能会引起并发问题,如果脚本很短,这通常没有问题。但如果脚本运行时间比较长,那就可能会产生问题。在现代 Web 应用程序开发中,有一个非常常见的情况,就是使用 AJAX 技术在同一个页面内发送多个请求获取数据。如果这些请求都需要使用Session,那么第一个请求到达服务器后会取得 Session 锁,其它请求就必须等待,所有请求将串行处理,即使它们彼此之间并没有依赖关系。这将大大增加页面的响应时间。有一个方法可以避免这个问题,就是在使用完 Session 以后立即调用 session_write_close()方法关闭 Session。这样 Session 锁就会释放,即使当前脚本还在等在处理。需要注意的是,调用该方法后,当前脚本就不能进一步操作 Session 了
2、实例:京东购物车的设置,如果用户已经登录,则把购物车数据保存到数据库里面,如果没有登录,则把购物车的数据给保存到 cookie 里面,当登录时,要判断 cookie 是否有购物车的数据,如果有,则把 cookie 里面的数据给移动到数据库里面。
3、提交商品到购物车:在前台模块里新建一个 CartController 控制器,添加 addCart方法
4、购物车列表:在购物车模型里添加 cartList 方法,用于显示列表。如果用户已经登录,则直接从购物车数据库里面取出数据,如果用户没有登录,则直接从 cookie 里面获取数据。最后在购物车控制器里面的 cartList 的方法中,并取出购物车数据,并在对应的静态页面里完成遍历,显示出来
5、cookie 移到 DB 中:用户登录后,要判断 cookie 里面是否有购物车数据,如果有,则就移动到数据库,在购物车模型里面定义一个方法cookie2db
登录成功后调用 cookie2db 方法即可
网友评论