首页 > php框架 > YII > yii怎么记录api接口执行时间

yii怎么记录api接口执行时间

王林
发布: 2020-02-17 17:17:38
原创
3113 人浏览过

yii怎么记录api接口执行时间

在 BaseController 中继承父类的 beforeAction 和 afterAction 勾子,记录API运行开始,以及结束时间。

示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

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;}

登录后复制

(推荐教程:yii框架

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

1

2

3

4

5

6

7

8

9

10

// 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);

    }}

登录后复制

日志输出如下:

1

2

3

4

5

6

7

8

9

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 配置如下:

1

2

3

4

5

6

7

[

    'class' => 'yii\log\FileTarget',

    'levels' => ['info'],

    'categories' => ['debug', 'sql', 'elastic', 'py'],

    'logVars' => [],

    'logFile' => '@runtime/logs/info.log'

]

登录后复制

更多编程相关内容,请关注php中文网编程教程栏目!

以上是yii怎么记录api接口执行时间的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板