DebugKit 的工具栏缓存耗尽内存

DebugKit's toolbar cache exhausts memory

我有一个将大变量传递给视图的控制器,但考虑到上下文没有什么不合理的(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 未加载时没有内存问题,因此它不会成为生产中的问题,但它在开发过程中出现了。有简单的解决方法吗?

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

  • 缩短历史:

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

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

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