我目前正在开发cakephp应用程序中的导出功能,我正在做一个查询,每个导出大约10,000行,哪个蛋糕可以处理但是debug_kit似乎使用了大量内存并且使我使用了超过128mb的内存。 / p>
我试过在函数的顶部尝试写这个,但是debugkit仍然涉及并使用大量内存。
Configure::write('debug',0);
答案 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'] )。
如果您的模型有多个关联,您应该查看可包含的行为
答案 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);
}
}