ホームページ >PHPフレームワーク >YII >Yii で API インターフェースの実行時間を記録する方法

Yii で API インターフェースの実行時間を記録する方法

王林
王林オリジナル
2020-02-17 17:17:383001ブラウズ

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 情報ログの二次カプセル化です

// 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 ログ構成は次のとおりです:

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

プログラミング関連のコンテンツの詳細については、php 中国語 Web サイトにご注意くださいプログラミングチュートリアル コラム!

以上がYii で API インターフェースの実行時間を記録する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。