Heim  >  Artikel  >  PHP-Framework  >  So zeichnen Sie die Ausführungszeit der API-Schnittstelle in Yii auf

So zeichnen Sie die Ausführungszeit der API-Schnittstelle in Yii auf

王林
王林Original
2020-02-17 17:17:382894Durchsuche

So zeichnen Sie die Ausführungszeit der API-Schnittstelle in Yii auf

Erben Sie die Hooks beforeAction und afterAction der übergeordneten Klasse in BaseController, um die Start- und Endzeit der API-Ausführung aufzuzeichnen.

Beispiel:

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

(Empfohlenes Tutorial: yii-Framework)

logInfo-Protokollierungsmethode, diese Methode ist eine sekundäre Kapselung des YII-Infoprotokolls

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

Die Protokollausgabe lautet wie folgt:

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

Die Konfiguration des Yii-Protokolls lautet wie folgt:

[
    'class' => 'yii\log\FileTarget',
    'levels' => ['info'],
    'categories' => ['debug', 'sql', 'elastic', 'py'],
    'logVars' => [],
    'logFile' => '@runtime/logs/info.log'
]

Weitere programmbezogene Inhalte finden Sie auf der chinesischen PHP-Website Programmier-Tutorial Kolumne!

Das obige ist der detaillierte Inhalt vonSo zeichnen Sie die Ausführungszeit der API-Schnittstelle in Yii auf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn