
在 BaseController 中继承父类的 beforeAction 和 afterAction 勾子,记录API运行开始,以及结束时间。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | private $actionStart = 0;
private $actionEnd = 0;
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 );
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 | function logInfo( $message , $category = "debug" )
{
$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中文网其他相关文章!