Discuz!的一处隐蔽Bug
今天插件上线了,有站长安装后,发现提交表单后页面白页了。
我在本机测试没问题的呀,很是奇怪。
算是第一个用户,晚上到家帮忙查了下问题。
原因
插件用到论坛管理的模块,同时使用了updatecache更新setting缓存。
这里触发到了Discuz!一个历史悠久的bug。
为什么说历史悠久,请看此帖。
今天插件上线了,有站长安装后,发现提交表单后页面白页了。
我在本机测试没问题的呀,很是奇怪。
算是第一个用户,晚上到家帮忙查了下问题。
插件用到论坛管理的模块,同时使用了updatecache更新setting缓存。
这里触发到了Discuz!一个历史悠久的bug。
为什么说历史悠久,请看此帖。
最近写了款插件,10月3日晚上提交的上架申请。
10月2日中午收到通知,被拒了,理由是:
[应用审核] “版块简介” 审核失败,现已被撤销 1、版主信息不是默认都显示吗 请修改你的描述 不要误导用户
插件描述里我已经写明了是悬浮显示版主信息,这里直接给我拒了。
10月2日晚上到家,重新提交申请,写明我是悬浮展示,未误导用户,结果又被拒了,理由是:
[应用审核] “版块简介 1.0” 审核失败,现已被撤销 卸载不干净$_G[\'setting\'][\'liudon_forum_summary_\' . $fid] 其他的问题自己去找 第2次了
找到source\plugin\manyou\Service\Client\Restful.php文件,搜索代码
$result = $this->_postRequest($url, $postString);
在这句下面添加代码
writelog('debug', $url . '-' . $postString . '-'. var_export($result, true));
然后到站点后台诊断工具下,点击同步站点信息,查看data/log下的日志文件,内容如下:
http://api.discuz.qq.com/site_cloud.php-format=PHP&method=site.sync&************-NULL
可以看到返回为空,继续追查。
找到source\function\function_filesock.php文件,搜索代码
curl_close($ch);
在这句下面添加代码
writelog('debug', $url . '-' . $errno . '-' . var_export($data, true));
然后到站点后台诊断工具下,点击同步站点信息,查看data/log下的日志文件,内容如下:
<?PHP exit;?> http://api.discuz.qq.com/site_cloud.php-28-NULL
curl错误号28表示超时,接口请求超时。
CURLE_OPERATION_TIMEDOUT (28)
找到source\plugin\manyou\Service\Client\Restful.php文件,搜索代码
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 5);
改为下面代码
$result = $this->_fsockopen($url, 0, $data, '', false, $ip, 30);
然后到站点后台诊断工具下,点击同步站点信息,提示同步成功。
ok,问题解决,把超时时间设置大一些即可。
今天收到好几个站点反馈QQ互联登录提示999错误的case,看了下程序,已经是请求互联开放平台的接口了,所以不是云平台的问题导致。
找到其中一个站点,检查站点后台诊断工具情况,发现互联接口请求失败,感觉像是域名解析IP换了,把设置的IP去掉后,请求成功。
ping了下openapi.qzone.qq.com,发现变成了112.90.83.87,确认是域名解析IP变更导致的。
如果你的网站通过DNS解析域名有问题,可以设置下面其中一个IP。
深圳电信 183.60.15.158
深圳联通 112.90.83.87
版主已阅插件为本人接触Discuz!来的第一款插件,地址见http://addon.discuz.com/?@dst_read.plugin.
1. 代码完全重写,优化插件的数据库查询。
2. 增加自定义已阅文字功能。
3. 增加自定义已阅文字颜色功能。
4. 记录已阅用户,已阅楼层显示标记已阅的用户名,以便后续查阅。
5. 增加跳转页面,解决已阅楼层被删除后无法跳转到已阅楼层的问题。
现在看早期写的代码简直不忍直视,一个页面十几次数据库查询...
好吧,新版全部重写了,快来更新吧~