LoginSignup
0
0

Laravelの内部処理改善の為、コントローラー処理速度を測定する

Last updated at Posted at 2023-06-02

始めに

システムのパフォーマンス改善を行う時に、数値でビフォー・アフターを見て、改善できたかを確認するのに、処理始まりと、処理の後で、どれくらい時間がかかっているか知りたい時に便利な方法です。

実装方法

調査するコントローラーのコンストラクタとデストラクタを使って、数行コードを入れるだけで簡単に数値を確認することが出来ます。

コンストラクタに、処理開始時の時間の値を取ります。
デストラクタに、処理終了時の時間の値を取ります。
それの差を求め、URLアクセスした場合に、実行したURL、かかった時間をLOGに出力するコードとなります。

App\Http\Controllers\Controller.php
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Log;

class Controller extends BaseController
{
    private $time_start;
    private $time_end;
    
    // コンストラクタ
    public function __construct()
    {
        $this->time_start = microtime(true); //実行開始時間を記録する
    }

    // デストラクタ
    public function __destruct()
    {
        $this->time_end = microtime(true);
        $time = $this->time_end - $this->time_start;
        Log::debug('実行ページ:'.url()->current().' 実行時間:'.$time.'秒');
        
    }


}

用途

以下のような時に、どれほどの効果があったかを確認するには、状況把握に数値を取りたいと思いました。
・PHPの処理で重いものを、軽くなるようにコードを書き直した時。
・データベースのインデックスを増やして、レスポンスを改善した時

ページ表示時に画像表示するまでの応答が長いケースは、内部処理のレスポンスが遅いと判断して、内部処理の改善する時に、数値を取って確認するには良いかと思います。

ECシステムやWebメディアなどは、ページビューが売上に相関性がありますので、大事な事と思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0