PHPでdate関数を使うと、通常意識するのは秒までかと思います。
しかし、それ以上細かい単位ミリ秒を扱いたい場合もあります。
今回は、PHPでミリ秒を扱うために以下の内容のお話をします。
【解説】PHPの時間とは
【基本】microtime関数でミリ秒を使う
【応用】ミリ秒が必要な時
PHPでの時間について
まずミリ秒の解説をする前に、PHPの中で使う時間はどのように表現されるか解説します。
タイムスタンプ
以下のような日付があったとします。
2018/1/1 10:55:05
しかしPHPの内部では以下のように認識されています。
1514771705
これは、西暦や日付や時間を秒に変換した数値です。
この数値をタイムスタンプと呼びます。
少し詳しい話をすると、【1970年1月1日 00:00:00 GMT】からその時間まで何秒経っているかを表します。
date関数と書式変換
続いて、日付を扱う時のdate関数についてお話します。
//第一引数だけの場合 echo date("Y/m/d H:i:s");
上記のように書くと以下のような結果になります。
2018/1/1 10:55:05
date関数の第一引数に出力したい書式を指定します。
そうすると現在の時間の結果が出力されます。
//第二引数まで指定した場合 echo date("Y/m/d H:i:s", 1514771705);
上記のように書くと以下のような結果になります。
2018/1/1 10:55:05
第一引数に書式、第二引数にはタイムスタンプを入力します。
そうすると、そのタイムスタンプを指定した書式で出力してくれます。
date関数についてもっと詳しく知りたい場合は以下を参考にしてください。
microtime関数について
続いて、タイムスタンプを扱うための関数microtimeについてです。
echo strtotime("2018/1/1 10:55:05");
上記のように書くと以下のような結果になります。
1514771705
date関数の第一引数に年月日を指定します。
そうすると指定した年月日のタイムスタンプが出力されます。
このようにして前章で説明したタイムスタンプを取得する事ができます。
PHPの時間の扱いについては理解して頂けましたでしょうか。
それでは、いよいよ次章からミリ秒について解説します。
ミリ秒変換を行ってみよう
ミリ秒の変換についてはmicrotime関数を使用します。
使い方は簡単で、以下のように使います。
echo microtime();
結果 0.64878500 1540722712
microtime関数は、現在の時刻をマイクロタイム秒までタイムスタンプで返します。
半角で区切って、左側がマイクロ秒で右側がタイムスタンプです。
また、microtimeはあくまでも現在の時間の測定です。
過去のタイムスタンプをミリ秒変換する事はできませんので注意です。
なぜならば、タイムスタンプは秒単位であるからです。
実行時間の計測
microtimeでミリ秒の取得がわかりましたが、実際どのように使用するのでしょうか。
特に、処理毎の実行時間測定などに使います。
パフォーマンス改善に有効です。
実際以下のようにコードに仕込んで使用します。
<?php $start_time = explode('.',microtime(true)); // 計測したい処理 $end_time = explode('.',microtime(true)); echo $end_time[0] - $start_time[0];
計測したい処理の前に、microtimeを実行して計算しやすい形に分割します。
処理の後にまた計測して、最後に引き算をするとかかった時間が分かるという仕組みです。
簡単に測定できますので、是非覚えておいて頂きたいです。
ミリ秒単位のsleep
最後に、ミリ秒単位でsleepを入れる方法を説明します。
sleepというのはプログラムを一時的に停止させる関数です。
sleepでは最小1秒しか設定できません。
それ以上小さい数値を設定するにはusleepを使用します。
0.3秒スリープさせるには以下のように記述します。
usleep(300000);
簡単ですが、これも是非覚えておいてください。
まとめ
今回はPHPのミリ秒について解説しました。
ミリ秒を理解するためには、PHPでの時間の扱いも理解する必要があります。
しっかり覚えておいて頂きたいです。
それでは、また。