我想在每個控制器方法運行時間(公共和私人)的日誌中寫一行。最初,我按照人們的想象設置了這一點,非常手動地從結束秒數中減去開始秒數,並在每個方法的開始和結束處寫入日誌。軌跡控制器方法運行時間
保持儘可能幹,我想知道如果有人知道一種方法來抽象這個,所以我不必在每一種方法編寫相同的代碼。
這是使用Codeigniter。
我想在每個控制器方法運行時間(公共和私人)的日誌中寫一行。最初,我按照人們的想象設置了這一點,非常手動地從結束秒數中減去開始秒數,並在每個方法的開始和結束處寫入日誌。軌跡控制器方法運行時間
保持儘可能幹,我想知道如果有人知道一種方法來抽象這個,所以我不必在每一種方法編寫相同的代碼。
這是使用Codeigniter。
看來你甚至不需要profiler類;可以只使用基準測試類:
的application/config/config.php文件:
$config['enable_hooks'] = TRUE;
的application/config/hooks.php:
$hook['post_controller_constructor'] = array(
'class' => 'MyProfiler',
'function' => 'start_profiler',
'filename' => 'profiler.php',
'filepath' => 'hooks',
);
// or 'post_system' to benchmark page render too
$hook['post_controller'] = array(
'class' => 'MyProfiler',
'function' => 'stop_profiler',
'filename' => 'profiler.php',
'filepath' => 'hooks',
);
應用/鉤/分析器.php:
class MyProfiler {
var $CI;
function __construct(){
$this->CI =& get_instance();
}
function start_profiler() {
$this->CI->benchmark->mark('code_start');
}
function stop_profiler() {
$this->CI->benchmark->mark('code_end');
echo $this->CI->benchmark->elapsed_time('code_start', 'code_end');//or log
}
}
http://ellislab.com/codeigniter/user-guide/general/hooks.html
http://ellislab.com/codeigniter/user-guide/libraries/benchmark.html
這絕對是正確的方向,但我不認爲它會完全符合我的要求(並且我認爲我必須在基準類之外進行)。我正在尋找運行前和運行*方法*運行的鉤子。例如,如果我有一個方法有一個循環,可以在同一個控制器中對私有方法運行10次調用,我希望公有方法的運行時間以及每個運行的私有方法。 – Chords
你有沒有看着可用探查? http://ellislab.com/codeigniter/user-guide/general/profiling.html – stormdrain
是的,但我正在尋找的是在「前/後控制器方法鉤」中使用,所以我沒有以每一種方法設置開始和結束。 – Chords