PHP ミリ秒を含む実行時の時間を取得する方法。

Web・ブログのこと Webの雑記
Array ( [0] => Array ( [parent] => 0 [slug] => web-tips [name] => Web・ブログのこと ) [1] => Array ( [parent] => 701 [slug] => web-zakki [name] => Webの雑記 ) )
スポンサーリンク

PHP ミリ秒を含む実行時の時間を取得する方法。

すぐ忘れる。カズヤ(@kazumiso_s)です。

PHPで開発している時にデバッグとして処理ごとにどれだけ実行時間を要しているか知りたい。

って時によく実行時の時間をミリ秒まで取得し、ログや画面に出力してその差を算出して参考する時があります。

でも・・・この実行時の時間をミリ秒まで取得する方法をすぐ忘れてしまうので備忘録も兼ねてご紹介。

スポンサーリンク

PHP ミリ秒を含む実行時の時間を取得する方法。

まず時間を取得できる「time()」という関数があります。

が、これはミリ秒までを取得できないので使用不可。

ミリ秒取得は「microtime()」というUNIXのタイムスタンプを取得する関数を使用します。

そして引数に「true」を設定。

echo 'microtime(true) = '.microtime(true) ;

実行結果は以下の通り。

microtime(true) = 1527369476.007

出力された値のドット(.)より前の部分がUNIXタイムスタンプの日時、後ろの部分がミリ秒を示す値。

とりあえずこれでミリ秒を含む実行時間を取得できた。

UNIXタイムスタンプをdate関数で変換

取得した日時の部分はこのままだと分かりづらい・・・というか分からない。

なのでdate関数を使って変換します。

まずはmicrotime関数で取得した値をドット(.)区切りで、日時とミリ秒に分割します。

やり方は色々あると思うけど私はいつもexplode関数を使います。

これで配列の0番目に日時、1番目にミリ秒がセットされるようになる。

出力する時は配列0番目に格納した日時をdate関数で変換させてあげる。

//microtimeを.で分割
$arrTime = explode('.',microtime(true));

//UNIXタイムスタンプ
echo $arrTime[0];

//date関数で任意の書式に変換
echo date('Y-m-d H:i:s', $arrTime[0]);

//ミリ秒
echo $arrTime[1];

//日時+ミリ秒
echo date('Y-m-d H:i:s', $arrTime[0]) . '.' .$arrTime[1];

実行結果は以下の通り。

$arrTime[0] = 1527369476

date(“Y/m/d H:i:s”, $arrTime[0]) = 2018/05/27 06:17:56

$arrTime[1] = 007

date(“Y/m/d H:i:s”, $arrTime[0]) . $arrTime[1] = 2018/05/27 06:17:56.007

これで実行時の日時+ミリ秒を取得し、出力することができるようになります!

何度も格納は面倒なので関数化してしまう。

これらの処理を各所に書くのは面倒なので、関数化すると便利。


function getUnixTimeMillSecond(){

    //microtimeを.で分割
    $arrTime = explode('.',microtime(true));

    //日時+ミリ秒
    return date('Y-m-d H:i:s', $arrTime[0]) . '.' .$arrTime[1];

}

実行結果は以下の通り。

echo getUnixTimeMillSecond(); = 2018-05-27 06:17:56.007

共通関数として一度作ってしまえば後は呼び出すだけでOKなので楽ちん。

って楽をするからすぐ忘れるんだけど・・・。

これを計測したい処理の前後に入れ、その処理の開始時間、終了時間の差を求めればどれだけ時間を要したかが分かるようになりますね。

パフォーマンス改善でボトルネックとなっているロジックを探したりするのに便利です!

でも・・・もっと簡単にできる方法ないのかなぁ(´Д`)

スポンサーリンク

この記事をシェアはこちらから。

フォローして頂けるとブログの更新情報をお届けできます。

この記事が気に入ったら「いいね!」
最新情報をお届けします。

もう1記事いかがですか。