【问题标题】:DebugKit's toolbar cache exhausts memoryDebugKit 的工具栏缓存耗尽内存
【发布时间】:2017-01-17 12:00:28
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    • 缩短历史记录:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 2012-11-10
      • 2012-08-19
      • 2011-02-09
      • 2015-10-01
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多