Maison  >  Article  >  cadre php  >  Comment enregistrer le temps d'exécution de l'interface API dans Yii

Comment enregistrer le temps d'exécution de l'interface API dans Yii

王林
王林original
2020-02-17 17:17:382895parcourir

Comment enregistrer le temps d'exécution de l'interface API dans Yii

Héritez des hooks beforeAction et afterAction de la classe parent dans BaseController pour enregistrer l'heure de début et de fin d'exécution de l'API.

Exemple :

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

(Tutoriel recommandé : yii framework)

Méthode de journalisation logInfo, cette méthode est une encapsulation secondaire du journal d'informations 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);
    }}

La sortie du journal est la suivante :

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

La configuration de Yii-log est la suivante :

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

Pour plus de contenu lié à la programmation, veuillez faire attention au site Web chinois php Tutoriel de programmationChronique !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn