discuz雲平臺報呼叫遠端介面失敗的問題分析和解決

weiwei~發表於2015-12-08

根據網路兩篇文章整理

問題描述:
當開通或關閉某個雲平臺服務的時候,報如下錯誤資訊:
呼叫遠端介面失敗。請檢查您的伺服器是否處於內網以及您伺服器的防火牆設定。

雲平臺測試站點的介面檔案正常,於是開始在檔案裡斷點記錄,發現程式也執行完了。
諮詢了下雲平臺的同事,說是有可能是超時導致的。

於是進站點後臺,進入chrome開發者模式下的網路選項卡,記錄所有網路連結。
然後去開通或關閉某個服務,發現需要耗時8s之久,估計確實像同事說的那樣是超時導致的。

問題總結:
出現此類問題的站點一般裝了很多外掛,更新外掛快取時耗時太久導致雲平臺訪問超時沒有正確的返回,進而報上面的錯誤。

 

 

解決辦法:

找到檔案"\api\manyou\Service\Server\Cloud.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後臺工具手動更新下快取。

相關文章