zoukankan      html  css  js  c++  java
  • discuz云平台报调用远程接口失败的问题分析和解决

    根据网络两篇文章整理

    问题描述:
    当开通或关闭某个云平台服务的时候,报如下错误信息:
    调用远程接口失败。请检查您的服务器是否处于内网以及您服务器的防火墙设置。

    云平台测试站点的接口文件正常,于是开始在文件里断点记录,发现程序也执行完了。
    咨询了下云平台的同事,说是有可能是超时导致的。

    于是进站点后台,进入chrome开发者模式下的网络选项卡,记录所有网络链接。
    然后去开通或关闭某个服务,发现需要耗时8s之久,估计确实像同事说的那样是超时导致的。

    问题总结:
    出现此类问题的站点一般装了很多插件,更新插件缓存时耗时太久导致云平台访问超时没有正确的返回,进而报上面的错误。

    解决办法:

    找到文件"apimanyouServiceServerCloud.php"注销掉60到64行:

    try {
    
                            require_once libfile('function/cache');
    
                            updatecache(array('plugin', 'setting', 'styles'));
    cleartemplatecache(); }
    catch (Exception $e) { } 

    修改为:

    //try {
    
                    //        require_once libfile('function/cache');
    
                    //        updatecache(array('plugin', 'setting', 'styles'));
                    //         cleartemplatecache();
                    //    } catch (Exception $e) {
    
                    //}

    原理:有些站点安装很多插件,不乏一些程序臃肿的插件,而操作云平台时,需要更新服务器的所有缓存,而时间限制是30秒,这样就会导致操作云平台因超时而报这个错误,注销掉既能解决这个问题;注意:这样操作的用户每次操作完云平台要手动更新一下缓存,否则云平台的菜单可能不更新;(不推荐注销代码的方式解决此问题,因为同步又会出问题,最好是卸载掉所有的插件来修复此问题,修复之后再按照自己的需求开启插件,当开启某插件而导致云平台又不能使用时,就能确定是哪个插件的问题了)

      

    看了各种办法,还是以上这个办法(相比原文,这里只需要修改cloud.php这一个文件)好使,更新代码后,记得要在admin后台工具手动更新下缓存。

  • 相关阅读:
    [PHP]socket的连接超时 与 读取/写入超时
    [PHP]引用返回与节省内存
    [PHP]实体类基类和序列化__sleep问题
    [PHP]日志处理error_log()函数和配置使用
    [PHP] 使用反射实现的控制反转
    [PHP] debug_backtrace()可以获取到代码的调用路径追踪
    [TCP/IP] TCP的传输连接管理
    [PHP] sys_get_temp_dir()和tempnam()函数报错与环境变量的配置问题
    [PHP] ubuntu下使用uuid扩展获取uuid
    [Linux] host dig nslookup查询域名的DNS解析
  • 原文地址:https://www.cnblogs.com/luowei/p/5029862.html
Copyright © 2011-2022 走看看