我想在日志中写一行,每个控制器方法运行的持续时间(公共和私有)。最初我按照人们的想象设置了这个,非常手动,从结束秒减去开始秒并写入日志,每个方法的开头和结尾都有该代码。
尽可能保持DRY,我想知道是否有人知道如何抽象这一点,所以我不必在每一种方法中编写相同的代码。
这是使用Codeigniter。
答案 0 :(得分:0)
看起来你甚至不需要探查器类;可以只使用基准类:
application / config / config.php :
$config['enable_hooks'] = TRUE;
应用/配置/ 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',
);
应用/钩/ profiler.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
}
}
https://www.codeigniter.com/user_guide/general/hooks.html
https://www.codeigniter.com/user_guide/libraries/benchmark.html