跟踪控制器方法运行时间

时间:2014-01-23 14:30:17

标签: codeigniter logging

我想在日志中写一行,每个控制器方法运行的持续时间(公共和私有)。最初我按照人们的想象设置了这个,非常手动,从结束秒减去开始秒并写入日志,每个方法的开头和结尾都有该代码。

尽可能保持DRY,我想知道是否有人知道如何抽象这一点,所以我不必在每一种方法中编写相同的代码。

这是使用Codeigniter。

1 个答案:

答案 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