开发者

Turning off debug_kit within controller action, Cakephp

开发者 https://www.devze.com 2022-12-15 08:18 出处:网络
I am currently working on an export function in cakephp app and im doing a query that is getting around 10,000 rows each export which cake can handle but debug_kit seems to be using lot of memory and

I am currently working on an export function in cakephp app and im doing a query that is getting around 10,000 rows each export which cake can handle but debug_kit seems to be using lot of memory and putting me over 128mb of memory used.

I have tried开发者_开发技巧 tried writing this in the top of the function but debugkit is still getting involved and using large amounts of memory.

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


HyperCas is correct in suggesting the beforeFilter() callback as an appropriate solution.

The code could look something like this in the controller where the action (ie, export) resides:

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

You would adjust array('export') to include all the actions you want to prevent debug.


Just to improve Benjamin Pearson's answer. Unload the component instead of turning debugging off.

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

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


Use

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

in /app/config/core.php

Or use it in the beforeFilter() callback on the controller. That would stop the debugging for the entire controller if you don't check manually for the current action (in $this->params['action']).

If your model has multiple associations you should take a look at the containable behavior

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


you can also switch the debug level in the config.php to 0. this will disable the debug kit automaticaly + your application will use even less memory.


Disable debug_kit on the fly

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


in cakephp3 open bootstrap.php file in config folder comments or remove the DebugKit loading

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

thats all .. it will unload the DebugKit from your application

0

精彩评论

暂无评论...
验证码 换一张
取 消