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

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

在 basecontroller 中继承父类的 beforeaction 和 afteraction 勾子,记录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;}

(推荐教程:yii框架

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("%sntmemory 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' => 'yiilogFileTarget',     'levels' => ['info'],     'categories' => ['debug', 'sql', 'elastic', 'py'],     'logVars' => [],     'logFile' => '@runtime/logs/info.log' ]

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

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享