美文网首页
【PHP框架应用-Yii2】记录API接口执行时间

【PHP框架应用-Yii2】记录API接口执行时间

作者: 故不忧_y | 来源:发表于2019-03-22 16:16 被阅读0次

    BaseController 中继承父类的 beforeActionafterAction 勾子,记录API运行开始,以及结束时间

    private $actionStart = 0;
    private $actionEnd = 0;
    // beforeAction, afterAction 用来记录API请求接口,以及耗时
    public function beforeAction($action)
    {
        $this->actionStart = microtime(true);
        return parent::beforeAction($action);
    }
    
    public function afterAction($action, $result)
    {
        $this->actionEnd = microtime(true);
        $afterAction = parent::afterAction($action, $result);
        // 记录API请求接口,耗时took
        logInfo(print_r(["api" => request()->url, "took" => sprintf("%.5f", $this->actionEnd - $this->actionStart)], true));
        return $afterAction;
    }
    

    logInfo 日志记录方法,这个方法是对 YII info日志的二次封装

    // yii日志组件记录日志
    if (!function_exists("logInfo")) {
        function logInfo($message, $category = "debug")
        {
            // 记录info日志,用于调试
            $logEnable = Yii::$app->params["log_enable"];
            if (is_null($logEnable) || $logEnable === false) {
                return;
            }
            Yii::info(sprintf("%s\n\tmemory used %d bytes [%.3f KB]", $message, memory_get_usage(), memory_get_usage()/1024), $category);
        }
    }
    

    日志输出如下

    2019-03-14 02:46:31 [127.0.0.1][-][-][info][debug] Array
    (
        [api] => /protocol?page=1&limit=12&unit=10m&time[]=1551854884755&time[]=1552459684755&q=&es_type=http&src_ip=&src_port=&dst_ip=&dst_port=&sensor_id=&uids=&prs_debug=1
        [took] => 0.18194
    )
    
        memory used 8996368 bytes [8785.516 KB]
        in /Users/tophant.yunfei/work/prs-rebirth-php/common/utils/function.php:316
        in /Users/tophant.yunfei/work/prs-rebirth-php/backend/controllers/RestBaseController.php:61
    

    Yii-log 配置如下

    [
        'class' => 'yii\log\FileTarget',
        'levels' => ['info'],
        'categories' => ['debug', 'sql', 'elastic', 'py'],
        'logVars' => [],
        'logFile' => '@runtime/logs/info.log'
    ]
    

    相关文章

      网友评论

          本文标题:【PHP框架应用-Yii2】记录API接口执行时间

          本文链接:https://www.haomeiwen.com/subject/axjrvqtx.html