2010-01-05 39 views
5

Tôi hiện đang làm việc trên một chức năng xuất trong ứng dụng CakePHP và thực hiện truy vấn nhận được khoảng 10.000 hàng mỗi lần xuất mà bánh có thể xử lý nhưng debug_kit dường như đang sử dụng nhiều bộ nhớ và hơn 128MB bộ nhớ được sử dụng.Tắt debug_kit trong hành động điều khiển, CakePHP

Tôi đã cố gắng viết điều này ở đầu chức năng nhưng debugkit vẫn đang tham gia và sử dụng lượng bộ nhớ lớn.

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

Trả lời

9

HyperCas là đúng trong việc đề xuất các callback beforeFilter() như là một giải pháp thích hợp.

Mã này có thể trông giống như thế này trong bộ điều khiển nơi mà hành động (ví dụ, xuất khẩu) sinh sống:

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

Bạn sẽ điều chỉnh array('export') để bao gồm tất cả các hành động mà bạn muốn ngăn chặn gỡ lỗi.

0

Sử dụng

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

trong /app/config/core.php

Hoặc sử dụng nó trong beforeFilter() gọi lại trên bộ điều khiển. Điều đó sẽ ngừng gỡ lỗi cho toàn bộ bộ điều khiển nếu bạn không kiểm tra thủ công đối với hành động hiện tại (trong $ this-> params ['action']).

Nếu mô hình của bạn có nhiều hiệp hội, bạn nên có một cái nhìn tại các hành vi containable

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

+0

Điều đó sẽ dừng tất nhiên nhưng tôi muốn dừng trên cơ sở mỗi hành động vì tôi vẫn muốn sử dụng nó ở các vị trí khác. – Shard

+0

bạn có thể thử gọi lại beforeFilter() gọi lại – HyperCas

0

bạn cũng có thể chuyển mức gỡ lỗi trong tệp config.php thành 0. điều này sẽ vô hiệu hóa trình gỡ rối automaticaly + ứng dụng của bạn sẽ sử dụng ít bộ nhớ hơn.

9

Chỉ cần cải thiện Benjamin Pearson's answer. Bỏ tải thành phần thay vì tắt gỡ lỗi.

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

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

điều này sẽ không hoạt động trong cakephp1.3 vì tôi không nghĩ rằng cakephp1.3 cho phép tải và tải lên các thành phần trên fly.This chức năng đã được thêm vào cakephp 2.x http://book.cakephp.org/2.0/en/controllers/components.html http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Components.html @ Hamid bạn có biết cách làm điều này trong caakephp1.3 không? – Garry

+0

@nedstark Tôi không thể tìm thấy phương pháp tương tự trong 1.3.Rất có thể bạn đã đúng. Bạn đã thử giải pháp của Benjamin? –

+0

Tôi thích câu trả lời này để tắt hoàn toàn việc gỡ lỗi. Cám ơn rất nhiều. –

0

trong cakephp3 mở bootstrap.php tập tin trong cấu hình thư mục ý kiến ​​hoặc loại bỏ các DebugKit tải

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

thats all .. nó sẽ dỡ bỏ các DebugKit từ ứng dụng của bạn

0

Tắt debug_kit khi đang bay

class AppController extends Controller { 
    public function beforeFilter() { 
     Configure::write('debug', 0); 
    } 
} 
Các vấn đề liên quan