记一次"连接已重置"的调试过程

项目是来自edusoho的开源版本,经一同事多次修改,接手时个人中心打不开,无修改密码功能等等,一步步解决了

说说调试了很久的“连接已重置”,最初这个问题只在用户的服务器出现,遂开始了坑自己的过程,用二分法删除代码,输出变量来调试,最终找到了一个公共方法,里面调用了一个系统方法,然后进行不下去了,两个方法都是系统中大量使用的,不能改(试着修改了公共方法,也没啥用)

第二天回来,一是不方便继续在服务器调试,二是自己也换了换思路,开始在自己电脑重现bug,关了debug,PHP版本从5.6切换到和服务器一样的5.5,chrome访问页面没啥问题(其实有问题,列表只显示了一半多,分页也没显示出来),控制台出现了net::ERR_CONNECTION_RESET 200 (OK),照着错误代码继续查资料,找到了别人连接mysql时出现连接已重置的错误,找到了上传大文件时连接已重置的错误等等,没解决

换了火狐浏览器,出现了和服务器一样的错误,然后在查询,无果

慢慢发现火狐中,页面加载是先显示了一部分内容的,甚至列表已经显示几条数据了,然后忽然就出现了错误页面,连接已重置,然后检查网络请求,好像是正常的,又回去检查chrome的网络请求,发现请求是failed,页面返回数据只有一半,忽然终止了,而且代码终止的位置,本地和服务器不一致,大概是因为性能不一样吧,改了最大上传数据量,最大执行时间等等,没啥用

但是到这里大概是明白了,这个是以为请求里面计算数据量太大或者太复杂导致的,不知道这样描述对不对

补充一点,这个页面在本地调试时,开了Xdebug会出现 Fatal error: Maximum function nesting level of '100' reached, aborting! 关了Xdebug就好了

总之后来想了个歪招,把分页数据量从20改到10就好了,,,

后续慢慢研究问题的根本

你可能感兴趣的:(PHP)