在控制器操作中关闭debug_kit,Cakephp

时间:2010-01-05 22:39:23

标签: cakephp

我目前正在开发cakephp应用程序中的导出功能,我正在做一个查询,每个导出大约10,000行,哪个蛋糕可以处理但是debug_kit似乎使用了大量内存并且使我使用了超过128mb的内存。 / p>

我试过在函数的顶部尝试写这个,但是debugkit仍然涉及并使用大量内存。

Configure::write('debug',0);

6 个答案:

答案 0 :(得分:9)

HyperCas在建议将beforeFilter()回调作为适当的解决方案时是正确的。

在操作(即导出)所在的控制器中代码看起来像这样:

function beforeFilter() {
    // filter actions which should not output debug messages
    if(in_array($this->action, array('export'))) {
        Configure::write('debug', 0);
    }
}

您可以调整array('export')以包含您希望阻止调试的所有操作。

答案 1 :(得分:9)

改善Benjamin Pearson's answer。卸载组件而不是关闭调试。

public function beforeFilter() {
    parent::beforeFilter();

    if(in_array($this->action, array('export'))) {
        $this->Components->unload('DebugKit.Toolbar');
    }
}

答案 2 :(得分:0)

使用

Configure::write('debug',0);

在/app/config/core.php

或者在控制器的beforeFilter()回调中使用它。如果您不手动检查当前操作,则会停止整个控制器的调试(在 $ this-> params ['action'] )。

如果您的模型有多个关联,您应该查看可包含的行为

http://book.cakephp.org/view/51/Controller-Attributes

答案 3 :(得分:0)

你也可以将config.php中的调试级别切换为0.这将自动禁用调试工具包+你的应用程序将使用更少的内存。

答案 4 :(得分:0)

在cakephp3中打开 config 文件夹中的 bootstrap.php 文件 注释或删除DebugKit loading

if (Configure::read('debug')) {
   // Plugin::load('DebugKit', ['bootstrap' => true]);
}

这就是全部..它将从您的应用程序中卸载DebugKit

答案 5 :(得分:0)

动态禁用debug_kit

class AppController extends Controller {
     public function beforeFilter() {
         Configure::write('debug', 0);
     }
}