PHPプログラミング

レシピ

ファイル / ディレクトリ

ファイルへ最後にアクセスした時刻を取得する

fileatime関数を使って、ファイルに最後にアクセスした時間を取得する方法について解説します。

この記事のポイント

  • ファイルの最後にアクセスされた時刻を取得する
  • ディレクトリについは内部のファイルへのアクセス時刻を取得するのではなく、ディレクトリ自身のアクセス時刻のみ取得できる

目次

ファイルに最後にアクセスした時刻を取得する

fileatime関数を使うと、特定のファイルに最後にいつアクセスがあったかが分かります。
「最後のアクセス」はファイルが参照された時間なので、読み取り、更新のどちらも含みます。

コード例

fileatime("./memo.txt");

返り値は時刻をタイムスタンプ形式で返し、該当するファイルが無いなどの理由で時刻の取得に失敗した場合はfalseとWarningエラーを返します。

ディレクトリに対してもfileatime関数を使用することはできますが、ディレクトリ内にあるファイルのいずれかにアクセスがあった場合の時刻を返すものではありません。
あくまでディレクトリ自身に対するアクセス時刻を取得する形になっており、ディレクトリ内のファイルリストを取得したタイミングだったり、ディレクトリ名の変更などがあった時刻が返ってきます。

似たような関数としてファイル / ディレクトリへの最終更新時刻を取得できるfilectime関数もあります。
こちらの関数については、「ファイル / ディレクトリを最後に更新した時刻を取得する」をご覧ください。

Note

ファイルが作成された時刻を取得する関数はありません。
もし作成日時の情報が必要となる場合は、データベースに保存するか、ファイル内部に書き込むなどの方法で作成時刻を保存しておく必要があります。

使用例

ファイルの最終アクセス時刻と、最終更新時刻をそれぞれ取得し、date関数で時刻フォーマットを整えてから出力する例です。

コード例

// 最終アクセス時刻を取得したいファイルのパス
$path = '/test/memo.txt';

// タイムゾーンを日本時間に設定
date_default_timezone_set('Asia/Tokyo');

echo '最終アクセス時刻:' . date( "Y-m-d H:i", fileatime($path));
echo '<br>';
echo '最終更新時刻:' . date( "Y-m-d H:i", filemtime($path));

出力例は次のようになります。

出力例

最終アクセス時刻:2018-12-16 20:13
最終更新時刻:2018-12-16 20:11

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。