2016-05-06 14 views
0

実稼働環境でデバッグレベルを変更せずにモデルキャッシュを無効にする便利な方法はありますか?現時点では、製品の更新後にモデルキャッシュをクリアするために、デバッグをオンにしないでCakePHPモデルキャッシュを無効にする

Configure::write('debug', *1 or 2*); 

を設定する必要があります。これは、デバッグメッセージや警告が表示されないように見える可能性があるため、最適ではありません。

ファイルキャッシュを使用していないため、/ tmp/cache/models /ディレクトリからキャッシュファイルを削除するだけでは簡単ではありません。

ありがとうございます。

+0

プラグイン[このような](https://github.com/ceeram/clear_cache)が役立つかもしれません。直接またはテンプレートとして、独自のキャッシュクリア機能を作成します。 – AD7six

+0

ありがとう@ AD7six。私はちょうど見ていない方法や設定で造られたものを期待していましたが、それはそうではないようです。 – JadedCore

答えて

0

これはしばらく答えていないので、自分の解決策を書いています。ここでは、必要に応じてキャッシュをクリアするために使用できる関数を示します。

管理ツールのコントローラを$ uses = falseで作成したので、関連するモデル/テーブルが検索されません。次に、現在設定されているすべてのエンジンを表示する関数を作成しました。構成されたキャッシュエンジンがユーザによって選択された場合、それは__clearCache()関数を呼び出す:

public function admin_cache_manager($clear=false, $engineName=''){ 
     $this->layout = 'manager'; 
     $engines = Cache::configured(); 
     if($clear){ 
      if($engineName == 'all'){ 
       $status = $this->__clearCache($engines); 
      } 
      else{ 
       $clearEngine[0] = $engineName; 
       $status = $this->__clearCache($clearEngine); 
      } 
      $this->set(compact('status')); 
     } 
     foreach($engines as $key => $engine){ 
      $configs[$key] = Cache::config($engine); 
     } 
     $this->set(compact('engines')); 
     $this->set(compact('configs')); 
    } 

__clearCache()関数は、実際に設定されたキャッシュをクリアし、ステータスを返す:

private function __clearCache($engines=array(), $check=false){ 
     foreach($engines as $engine){ 
      if(Cache::config($engine)){ 
       if(Cache::clear($check, $engine)){ 
        $status[$engine] = 'Cache Cleared'; 
       } 
       else{ 
        $status[$engine] = 'Clear Cache Failed'; 
       } 
      } 
      else{ 
       $status[$engine] = 'Engine Not Configured.'; 
      } 
     } 
     return $status; 
    } 
関連する問題