2017-01-17 10 views
1

大きな変数をビューに渡すコントローラがありましたが、文脈を考えれば不合理ではありません(PHPは約100 MBのRAMを使用します)。DebugKitのツールバーキャッシュがメモリを使い果たしました

私の問題は、DebugKitは、次の実行にアンシリアライズするために多くのメモリを必要とする大規模な一時ファイルを生成していることである:

app\tmp\cache\cake_toolbar_cache7ee836dd8c8f85f0f69f716bad0bbd94 

それは私のファイルは、すべてのページに成長することを除いて、Solution to Fatal error - Allowed memory size exhausted in CakePHP FileEngine.phpで説明したのと同じ問題です負荷。どのくらいのメモリを割り当てても、システムが処理できる限界を超えてしまいます。手動でファイルを削除してからやり直す必要があります。

DebugKitが処理しようとしているデータの正確な部分が完全にわかりませんが、ファイルにはトップレベルの数値配列が含まれているようです。各サブ配列にはデータセットの完全なコピーが含まれています。 リクエスト履歴である可能性があります。

私は、デバッグレベルがゼロでDebugKitがロードされないので、メモリに問題がないことを確認しました。そのため、プロダクションでは問題にならないでしょうが、開発中に途中で取得できます。簡単な修正はありますか?

答えて

1

いくつかの徹底的なテストによって、実際には「履歴」パネルであることが確認されました。我々はできるように、そのパネルは、コントローラで設定可能です:

  • 歴史を短くしてください:

    public $components = array(
        'DebugKit.Toolbar' => array('history' => 2), 
    ); 
    
  • 無効に歴史:

    public $components = array(
        'DebugKit.Toolbar' => array(
         'panels' => array(
          'history' => false, 
         ), 
        ), 
    ); 
    

私は2番目とのより良い結果を得ましたとにかく私は歴史を使っていませんでした。

関連する問題