bug查找

周五被告知,公司有个系统中的支付部分存在一个订单只更新其中的一个子订单,其他的都不更新.

    然后开始排查,排查后,微信支付是会产生这样的情况,然后在本地进行模拟.把微信的回调的代码手动通知到本地的回调通知地址,发现订单更新正常,然后各种打断点,写日志,一切正常,但是在服务器上却是异常的,测试服务器也异常,刚开始我甚至觉得我服务器上的是假代码.

    后面重构代码,发现有时候依然是只更新一个订单,foreach执行第一次,这时候开始在处理学习记录和更新学习人数的代码里面,有个问题,在修改学习人数的代码里面,他会检测一个session uid的存在,uid不存在 则会退出脚本,那微信的回调时候肯定没带着这个uid,他就会导致这个的失败,而我自己用手动的去试的时候是有session的,后面解决的方法是在回调的那里,根据订单用户id,检测有没有这个id,没有的话,在session中设置一个,这样就解决了这个问题.

 从中吸取到的教训是,检查代码要认真仔细,代码耦合度较高的时候更要仔细检查,然后上线,不要放过那些简单的东西,在做bug调试的时候,要专注中心,不是非常重要的代码都可以先注释,慢慢排除,缩小检查范围,检查问题.

终于解决了这个让人头疼的问题.~~

nickname
content