您好,欢迎访问一九零五行业门户网

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("%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']
更多编程相关内容,请关注编程教程栏目!
以上就是yii怎么记录api接口执行时间的详细内容。
其它类似信息

推荐信息