プロジェクト

全般

プロフィール

Bug(バグ) #3352

Yuya Watanabe さんが11年以上前に更新

h3. 概要 

 プラグインチャンネルサーバに接続できない場合に管理画面のプラグインリスト画面(/pc_backend.php/plugin/list)が表示できない場合がある. 

 具体的には,インストールしているプラグインが多い状態で plugins.openpne.jp に接続できない場合に実行時間が大きくなり,設定によっては画面がレンダリングされない. 

 h3. 原因 

 プラグインリスト画面(/pc_backend.php/plugin/list)を表示する際,コード部としては下記部分を通るが,それぞれのプラグインについてインスタンスを生成しようとする.このとき,各生成プロセスでは プラグインリスト画面(/pc_backend.php/plugin/list)を表示する差異,コード部としては下記部分を通るが,それぞれのプラグインについてインスタンスを生成しようとする.このとき,各生成プロセスでは registerChannel() を呼び出しており,ここで数秒ほどブロックされ,例外を握りつぶした後処理を終了して次のインスタンス生成処理に移る.このプロセスが全プラグインに対して行われるため,全体として実行時間が大きくなって表示が遅くなり,数が多い場合には表示されない. 

 <pre> 
 lib/plugin/opInstalledPluginManager.class.php 
  67     public function getInstalledPlugins() 
  68     { 
  69       $result = array(); 
  70  
  71       $plugins = sfContext::getInstance()->getConfiguration()->getAllOpenPNEPlugins(); 
  72       foreach ($plugins as $pluginName) 
  73       { 
  74         $result[$pluginName] = $this->getPluginInstance($pluginName); 
  75       } 
  76  
  77       return $result; 
  78     } 
 </pre> 

 <pre> 
 lib/plugin/opPluginManager.class.php 
  50         try 
  51         { 
  52           $environment->registerChannel($this->channel, true);      
  53         } 
  54         catch (sfPluginException $e) {} 
 </pre>

戻る