最近遇到了一个 bug,同个客户最新的订单号会替换成之前已成功的订单号,一直在查找这个 bug,从业务逻辑语句,C 层,M 层,查了个遍,感觉都没有什么问题。结款页面的逻辑是这样的:用户点了购物车,然后进入结款,数据库插入最新的 order_id,根据 order 订单状态来判断该笔订单是否结账,客户付款成功,再来更新绑定 customer_id,这个 order_id 会保存为 session,通过 cookies 发送到客户端,重新刷新该结账页面,客户端通过 cookies 上面的 PHPSESSID,找到 session 里面的 order_id。所以想请教一下会不会可能是 session 更新的问题呢?会不会在结账的时候读取了上一笔订单的 session ?
1
DamonLin OP 1024 快乐啊
|
2
markgor 2018-10-24 20:42:59 +08:00
第一,所谓的 bug 其实都是因为没有按照设计者的理想逻辑去执行而导致的。
第二,究竟是通过 cookies 来存了 order_id 还是你只是存了去 session,然后说了遍 session 的实现流程。 其实最好的方法还是放代码出来,或者抓重点问。 另外 session 不会存在不及时更新的问题,PHP 运行的时候 session 是在内存里的,然后 PHP 结束后默认会写入 tmp 里面,当你再次运行 session_start 时候会从这个 tmp 文件夹里读取回之前写入的 session。 |