定位错误来源:
1. 使用firebug或类似于firebug的工具审查”通信失败“这几个字
2. 会发现包含这几个字的div的同级下方有个script标签,复制该script标签的src值到浏览器的新标签页并打开
3. 这个url指向的是ucenter中app模块的onping操作(ucenter/control/admin/app.php)
onping解析:
1. onping会向url中指定的应用的uc.php发出一个请求,请求的参数为要执行的存在于uc.php中的动作的动作名test以及一个时间戳
2. uc.php收到请求会执行test,并返回1
通信失败排查方法:
根据上面的解析可知,如果通信失败就说明应用中的uc.php并没有正常的返回1,此时就要排查uc.php出了什么问题:
1. 在onping中输出$url(该url为ucenter根据自己设置的应用信息组成的uc.php的url),检查该url是否可以正常访问到应用中的uc.php,如果不能请修改
2. 如果可以正常访问且没有报错,那么就要一步步的排查uc.php的执行状况了
最终的目的就是让$url的输出为1
一个比较怪异的问题:
有时候会发现$url的输出值为 "乱码1",而导致通信失败...
这里的乱码其实是uc.php文件或者uc.php加载的其他文件的bom头,要去除它,就要排查哪个文件中存在这个bom头然后去掉,如果实在找不到,还有个治标不治本的方法:
(为返回状态值做去除bom头的操作)
代码:
function rmBOM($string)
{
if (substr($string, 0,3) == pack('CCC',0xef,0xbb,0xbf))
{
$string = substr($string, 3);
}
return $string;
}