DebugKit的工具栏缓存会耗尽内存

时间:2017-01-17 12:00:28

标签: cakephp cakephp-2.5 cakephp-debug-kit

我有一个将大变量传递给视图的控制器,但在给定上下文的情况下没有任何不合理的事情(PHP使用大约100 MB的RAM)。

我的问题是DebugKit会生成一个大型临时文件,需要大量内存才能在下次运行时反序列化:

app\tmp\cache\cake_toolbar_cache7ee836dd8c8f85f0f69f716bad0bbd94

这与Solution to Fatal error - Allowed memory size exhausted in CakePHP FileEngine.php中描述的问题相同,只是我的文件在每次加载页面时都会增长。无论我让PHP分配多少内存,它最终都会超出系统能够处理的限制。我需要手动删除文件并重新开始。

我不完全确定DebugKit试图处理的确切数据是什么,但该文件似乎包含顶级数字数组,每个子数组都包含我的数据集的完整副本。我怀疑它可能是请求历史记录

我已经确认当调试级别为零并且DebugKit没有加载时没有内存问题,因此它不会成为生产中的问题,但它会在开发过程中继续运行。有一个简单的解决方法吗?

1 个答案:

答案 0 :(得分:1)

一些彻底的测试证实它确实是"历史"面板。该面板可在您的控制器中配置,因此我们可以:

  • 缩短历史记录:

    public $components = array(
        'DebugKit.Toolbar' => array('history' => 2),
    );
    
  • 禁用历史记录:

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

我用第二种方法得到了更好的结果,而且我还没有使用历史。