始めに
システムのパフォーマンス改善を行う時に、数値でビフォー・アフターを見て、改善できたかを確認するのに、処理始まりと、処理の後で、どれくらい時間がかかっているか知りたい時に便利な方法です。
実装方法
調査するコントローラーのコンストラクタとデストラクタを使って、数行コードを入れるだけで簡単に数値を確認することが出来ます。
コンストラクタに、処理開始時の時間の値を取ります。
デストラクタに、処理終了時の時間の値を取ります。
それの差を求め、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メディアなどは、ページビューが売上に相関性がありますので、大事な事と思います。