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 Framework)
logInfo 로깅 방법, 이 방법은 보조입니다. YII 정보 로그 캡슐화
// 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' ]
추가 프로그래밍 관련 content , PHP 중국어 웹사이트의 programming tutorial 칼럼을 주목해주세요!
위 내용은 Yii에서 API 인터페이스 실행 시간을 기록하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!