php程序死循环导致502报错

请求访问返回502错误提示,尝试去除可疑代码段,发现程序正常,可疑代码段如下图箭头指向:

php程序死循环导致502报错_第1张图片

当时脑热的以为是本地php5.5.18版本过低,不支持[]数组语法(实际php 5.4 开始支持的),于是升级为php7.0.5版本,然而发现依旧502。

最后仔细观察nginx错误提示,nginx慢日志如下图所示,发现到指定代码行执行失败了,才开始考虑可能是可疑代码行之后的代码出现问题。

php程序死循环导致502报错_第2张图片

找到指定行,如下图代码块所示。通过日志跟踪调试发现,当删除可疑行代码时,$adminIpArr数组为空,可以顺利结束while循环,当数组不为空时,由于$bin变量不发生变化,导致程序陷入死循环。

php程序死循环导致502报错_第3张图片

php-fpm由于长时间未返回处理结果给nginx,导致nginx响应超时,导致nginx最终返回502错误。nginx错误提示如下:


修改死循环代码,使$bin变量自动增加,即可正常结束循环。

php程序死循环导致502报错_第4张图片

你可能感兴趣的:(异常处理)