読み込み中...

PHPを使った現在時刻取得の5つのステップ!ミリ秒まで精密に計測

PHPを使った現在時刻の取得 PHP
この記事は約7分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

「PHPを使った現在時刻取得の5つのステップ:ミリ秒まで精密に計測」へようこそ。

本記事を通じて、PHPを使って現在時刻をミリ秒単位まで精密に取得する方法について学ぶことができます。

これにより、精緻なタイミング制御やパフォーマンスのモニタリングなど、時刻を駆使した開発が可能となります。

初心者向けに詳しく解説するので、PHPに初めて触れる方でも安心して進められます。

サンプルコードも交えて解説しますので、理解を深めることができます。

●PHPとは

PHPは、Webサーバーで動作するスクリプト言語で、主にサーバーサイドのアプリケーション開発に使用されます。

高い可用性と容易な学習性を持つため、多くのWeb開発者に愛用されています。

PHPには、日付や時刻を取り扱うための多くの関数が組み込まれています。

●現在時刻を取得するPHPの基本構文

PHPで現在の時刻を取得する一番基本的な方法は、組み込み関数のdatetimeを利用することです。

time関数は現在のUnixタイムスタンプを返し、date関数は指定したフォーマットで日付や時刻を整形します。

<?php
  $now = time();
  echo date("Y-m-d H:i:s", $now);
?>

このコードでは、まずtime関数を使って現在のUnixタイムスタンプを取得し、変数$nowに代入しています。

次に、date関数を使って$nowの値を”Y-m-d H:i:s”の形式で出力しています。

“Y-m-d H:i:s”は年-月-日 時:分:秒を表します。

●現在時刻をミリ秒まで取得する方法

一方、PHPで現在時刻のミリ秒を取得する方法は少し工夫が必要です。

それは、PHPのdatetime関数は秒単位までしか取得できないからです。

そのため、ミリ秒単位で時刻を取得するには、microtime関数を使う必要があります。

microtime関数は、Unixエポック(1970年1月1日 0時0分0秒 UTC)からの経過時間を秒とマイクロ秒(1/1,000,000秒)で返します。

これを利用して現在時刻のミリ秒を取得することが可能です。

ただし、マイクロ秒をミリ秒に変換するためには、1000で割る必要があります。

<?php
  list($usec, $sec) = explode(" ", microtime());
  $msec = round($usec*1000);
  echo date("Y-m-d H:i:s", $sec) . '.' . sprintf('%03d', $msec);
?>

このコードでは、microtime関数を使って現在時刻の秒とマイクロ秒を取得し、explode関数でそれぞれの部分を分離しています。

その後、マイクロ秒をミリ秒に変換するために1000を掛け、結果を四捨五入しています。

最後に、date関数とsprintf関数を使って、秒とミリ秒を組み合わせて出力しています。

○サンプルコード1:現在のUnixタイムスタンプを取得

PHPでは、time関数を使用することで現在のUnixタイムスタンプを取得することができます。

Unixタイムスタンプは1970年1月1日0時0分0秒(UTC)からの経過秒数を表します。

<?php
  $timestamp = time();
  echo $timestamp;
?>

このコードでは、time関数を使って現在のUnixタイムスタンプを取得し、変数$timestampに代入しています。

その後、echo関数を使って取得したタイムスタンプを出力しています。

これは最も簡易的な現在時刻の取得方法であり、日時計算の基礎となる情報です。

○サンプルコード2:現在の日時を取得

次に、現在の日時を取得する方法を見ていきましょう。

ここではdate関数を用いて現在の日時を取得します。date関数は指定したフォーマットで現在の日時を返す関数です。

<?php
  $date = date("Y-m-d H:i:s");
  echo $date;
?>

このコードでは、date関数を用いて”Y-m-d H:i:s”という形式で現在の日時を取得し、変数$dateに代入しています。

その後、echo関数を使って取得した日時を出力しています。

“Y-m-d H:i:s”は、年-月-日 時:分:秒の形式で日時を表示します。

○サンプルコード3:現在のミリ秒を取得

PHPでは、microtime関数を使用することで現在のミリ秒を取得することができます。

ただし、microtime関数が返す値は秒とマイクロ秒の組み合わせなので、適切に処理を行う必要があります。

<?php
  list($usec, $sec) = explode(" ", microtime());
  $msec = round($usec * 1000);
  echo date("Y-m-d H:i:s", $sec) . '.' . sprintf('%03d', $msec);
?>

このコードでは、まずmicrotime関数を使って現在時刻の秒とマイクロ秒を取得し、explode関数でそれぞれの部分を分離しています。

その後、マイクロ秒をミリ秒に変換するために1000を掛け、結果を四捨五入しています。

最後に、date関数とsprintf関数を使って、秒とミリ秒を組み合わせて出力しています。

●応用例:現在時刻を使用したログ生成

現在時刻の取得は、ログ生成などの実用的な場面で頻繁に利用されます。

特に、ミリ秒単位での時刻取得は、高精度なタイムスタンプが求められるログ生成や計測タスクにおいて重要です。

たとえば、ウェブアプリケーションの動作を監視する際、リクエストとレスポンスの時間をミリ秒単位で記録することで、システムのパフォーマンスを詳細に把握することが可能になります。

同様に、エラーや例外が発生した際のログにも、発生時刻をミリ秒単位で記録することは有用です。

それでは、現在時刻をミリ秒単位で取得し、それを用いてログを生成する具体的なサンプルコードを見ていきましょう。

○サンプルコード4:ミリ秒単位でのログ生成

現在の日時(ミリ秒単位)を取得し、その情報を用いてログメッセージを生成するPHPのサンプルコードを紹介します。

<?php
  function getMicrotimeDate() {
    list($usec, $sec) = explode(" ", microtime());
    $msec = round($usec * 1000);
    return date("Y-m-d H:i:s", $sec) . '.' . sprintf('%03d', $msec);
  }

  $log_message = getMicrotimeDate() . " - This is a log message.";
  echo $log_message;
?>

このコードでは、まずミリ秒単位での現在日時を取得するためのgetMicrotimeDate関数を定義しています。

この関数内ではmicrotime関数を使って現在の秒とマイクロ秒を取得し、マイクロ秒をミリ秒に変換後、秒とミリ秒を組み合わせて現在日時を返しています。

次に、このgetMicrotimeDate関数を使って現在日時を取得し、その日時とログメッセージを組み合わせて一つのログメッセージを作成しています。

最後にecho関数を使ってログメッセージを出力しています。

これにより、ミリ秒単位の時間情報を含む詳細なログを生成することができます。

これらのステップを通じて、PHPを使った現在時刻の取得方法とその応用例について理解を深めることができました。

まとめ

本記事では、PHPを使って現在時刻をミリ秒まで精密に取得する方法を初心者向けに詳細に解説しました。

まずPHPとその基本構文について説明し、その後、具体的なサンプルコードを交えて、現在のUnixタイムスタンプの取得方法、現在の日時の取得方法、そして現在のミリ秒の取得方法を説明しました。

さらに、これらの方法を用いた応用例として、ミリ秒単位でのログ生成の方法についても説明しました。

これらの知識を活かし、現在時刻の取得やログ生成などのタスクをスムーズに行えるようになることを願っています。

これからもPHPの学習を頑張ってください。