【PHP8.x】fileatime関数の使い方

fileatime関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

fileatime関数は、指定されたファイルの最終アクセス時刻を取得する処理を実行する関数です。この関数は、引数としてファイルへのパスを文字列で受け取り、そのファイルが最後に読み込みなどのアクセスをされた日時を返します。戻り値は、成功した場合はUnixタイムスタンプ形式の整数となり、これは1970年1月1日 00:00:00 UTCからの経過秒数を表します。ファイルが存在しないなどの理由で時刻の取得に失敗した場合は、falseを返します。注意点として、パフォーマンス向上のため、関数の結果はキャッシュされることがあります。したがって、最新の情報を確実に取得するためには、この関数を呼び出す前にclearstatcache()関数を実行してキャッシュをクリアする必要があります。また、使用しているオペレーティングシステムやファイルシステムの設定によっては、アクセス時刻が更新されない場合があるため、その環境では期待通りの結果が得られない可能性があります。ファイルの最終更新時刻を取得する場合はfilemtime関数、inodeの最終変更時刻を取得する場合はfilectime関数を使用します。

構文(syntax)

1<?php
2// 構文: fileatime ( string $filename ) : int|false
3
4// 対象となるファイルのパスを指定します
5$filename = 'path/to/your/file.txt';
6
7// fileatime関数を呼び出し、ファイルの最終アクセス時刻を取得します。
8// 成功した場合はUNIXタイムスタンプ(整数)、失敗した場合は false を返します。
9$lastAccessTime = fileatime($filename);
10?>

引数(parameters)

string $filename

  • string $filename: ファイルのパスを指定する文字列

戻り値(return)

int|false

fileatime関数は、指定されたファイルの最終アクセス時刻をUNIXタイムスタンプ形式の整数で返します。エラーが発生した場合はfalseを返します。

サンプルコード

PHPでファイルの最終アクセス時刻を取得する

1<?php
2
3// ファイルの最終アクセス時刻を取得する例
4$filename = 'example.txt';
5
6// ファイルが存在するか確認
7if (file_exists($filename)) {
8  // ファイルの最終アクセス時刻をUnixタイムスタンプで取得
9  $lastAccessTime = fileatime($filename);
10
11  // 取得に成功した場合
12  if ($lastAccessTime !== false) {
13    // 人間が読める形式に変換して表示
14    echo "ファイルの最終アクセス時刻: " . date("Y-m-d H:i:s", $lastAccessTime) . PHP_EOL;
15  } else {
16    // 取得に失敗した場合
17    echo "ファイルの最終アクセス時刻の取得に失敗しました。" . PHP_EOL;
18  }
19} else {
20  echo "ファイルが存在しません。" . PHP_EOL;
21}
22
23?>

このPHPのサンプルコードは、fileatime関数を使用して、指定されたファイルの最終アクセス時刻を取得する方法を示しています。fileatime関数は、引数としてファイル名(文字列)を受け取り、そのファイルの最終アクセス時刻をUnixタイムスタンプ(整数値)として返します。もしファイルの最終アクセス時刻の取得に失敗した場合、falseを返します。

まず、file_exists関数を使って、指定されたファイルが存在するかどうかを確認します。これは、存在しないファイルに対してfileatime関数を実行するとエラーが発生する可能性があるためです。ファイルが存在する場合、fileatime関数を呼び出し、最終アクセス時刻を取得します。

fileatime関数の戻り値がfalseでない場合、正常に最終アクセス時刻が取得できたことを意味します。取得したUnixタイムスタンプは、date関数を使って人間が読みやすい形式(例:YYYY-MM-DD HH:MM:SS)に変換し、表示します。date関数は、第一引数にフォーマット文字列、第二引数にUnixタイムスタンプを受け取り、指定されたフォーマットで日付と時刻を文字列として返します。

もし、fileatime関数がfalseを返した場合、最終アクセス時刻の取得に失敗したことを示すメッセージを表示します。また、ファイルが存在しない場合は、その旨を表示します。このように、エラーハンドリングを行うことで、より堅牢なコードを作成できます。このコードは、ファイルのメタデータにアクセスする基本的な例であり、ファイル管理やログ分析などに役立ちます。

fileatime関数は、ファイルの最終アクセス時刻をUnixタイムスタンプで返します。ファイルが存在しない場合や、アクセスに失敗した場合はfalseを返すため、戻り値がfalseでないか確認することが重要です。Unixタイムスタンプは、date()関数を用いることで人間が読みやすい形式に変換できます。ファイルパスは、スクリプトからの相対パスで指定します。file_exists()関数で事前にファイルの存在を確認することで、エラーを回避できます。ファイルアクセス権限がない場合もfalseが返る可能性があるため、権限設定も確認してください。PHPのバージョンによっては、タイムゾーンの設定が必要になる場合があります。

関連コンテンツ