讨论数量:
几年前TP写的项目线上环境跑一会儿就宕机,排查了一夜代码回退都解决不了,第二天大家都大眼瞪小眼没招了,然后我说大家再来模拟下昨天怎么部署代码的吧,然后那个同事打开了fileZilla右键配置文件打开了文本修改了配置项 :joy:然后我就蒙了这TM保存了不会带bom头?然后把配置文件重新上传了一份问题解决了。。。
去年年初运维反映每次单片机重启,网页登录都会有一段时间无效,表现为点击登录后又跳转到登录页面。
传说这个网页项目是一位C语言开发者使用了半年时间用PHP的远古CI框架开发的,就是composer都没有的那种。
我直接说BUG出现的原理吧:
- 该网页每次登录都会在数据库记录用户名和登录时间,然后后续所有请求都需要使用session中的用户名查询登录时间,如果没有登录时间,则判断为非法请求,跳转到登录页面。
- 该单片机重启或者掉电后系统的时间都会重置到
1970-01-01 00:00:00
也就是时间戳为零的那一天。
于是:
- 首先是登录时的数据库记录使用的是
Y-m-d H:i
,也就是没有秒的记录。 - 每个请求进行判断的时候,并不是判断登录时间字符串是否为空,而是转成时间戳判断是否为零。
- 于是在单片机重启后一分钟内,登录记录的登录时间转换成的时间戳永远为零,判断不通过,跳转到登录页面,BUG出现。
结论:错一步都不会出现该BUG,厉害!
推荐文章: