PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのfileatime()関数とは?使い方とサンプルコードをわかりやすく解説

PHPのfileatime()関数は、指定したファイルに最後にアクセス(読み取りなど)があった日時を取得するための組み込み関数です。取得できる値はUNIXタイムスタンプ形式で返され、ファイルへの最終アクセス時刻をプログラム内で扱えるようになります。ファイルが存在しない場合やアクセス権限がないなど、処理に失敗した場合はfalseを返します。

基本構文

fileatime ( file_path );

パラメータ

  • file_path − 最終アクセス日時を調べたいファイルへのパスを指定します。相対パスでも絶対パスでも指定可能です。

戻り値

ファイルの最終アクセス時刻をUNIXタイムスタンプ(1970年1月1日00:00:00 UTCからの経過秒数)として返します。処理に失敗した場合はfalseを返します。

使用例:タイムスタンプで取得する

まずは、もっともシンプルな使い方です。「new.txt」というファイルの最終アクセス時刻をそのまま表示してみましょう。

<?php
    echo fileatime("new.txt");
?>

出力結果

1315416291

使用例:人間が読める形式の日付で表示する

UNIXタイムスタンプは数字だけなので、このままでは直感的に把握しにくいかもしれません。date()関数と組み合わせることで、「2024年5月1日 10:30:15」のような人間が理解しやすい形式に変換して表示できます。

<?php
    echo "ファイルの最終アクセス日時: ".date("Y年m月d日 H:i:s", fileatime("new.txt"));
?>

出力結果

ファイルの最終アクセス日時: 2011年09月07日 21:24:51

注意点

fileatime()関数を使う際には、いくつか知っておきたいポイントがあります。

  • キャッシュの影響: PHPはファイル情報をキャッシュする仕組みがあるため、同一スクリプト内で同じファイルに対して繰り返し確認する場合は、clearstatcache()を実行してキャッシュをクリアすると正確な値を取得できます。

  • atimeは更新されない場合がある: サーバー環境やOSの設定によっては、パフォーマンス向上のためファイルシステム側でアクセス時刻(atime)の更新が無効化されていることがあります。その場合、意図した値が得られない可能性がある点に注意してください。

  • エラーの扱い: ファイルが存在しない場合、falseが返されるとともにE_WARNINGレベルのエラーが発生します。事前にfile_exists()で存在チェックを行うか、「@」演算子でエラー出力を抑制する方法もあります。

まとめ

fileatime()関数は、ファイルの最終アクセス日時をUNIXタイムスタンプで簡単に取得できる便利な関数です。date()関数と組み合わせれば見やすい日付形式での表示も可能です。ログ監視やキャッシュ管理など、ファイルの利用状況を把握したい場面で活用してみてください。

  1. PHPのfread()関数の使い方を徹底解説!ファイル読み込みの基本と実践例

    fread()関数は、PHPで開いているファイルからデータを読み込むための組み込み関数です。読み込みは、ファイルの終端(EOF)に達した時点、または指定したバイト数に到達した時点のどちらか早い方で停止します。この関数はバイナリセーフ(バイナリデータにも対応)であるため、テキストファイルだけでなく画像などのバイナリファイルの読み込みにも利用できます。基本構文fread(file_pointer, length)パラメータの詳細file_pointer: fopen()関数を使って作成されたファイルポインタリソースを指定します。必須項目です。length: 読み込む最大バイト数を指定します。必須項

  2. PHPのfpassthru()関数の使い方を徹底解説

    fpassthru()関数とはPHPのfpassthru()関数は、開いているファイルからEOF(ファイルの終端)までデータを読み込み、その内容を出力バッファに書き出すための関数です。ファイルポインタから読み取った文字数を返し、エラーが発生した場合はFALSEを返します。構文fpassthru(file_pointer):パラメータfile_pointer − fopen()またはfsockopen()によって正常にオープンされ、まだfclose()で閉じられていないファイルを指すファイルポインタを指定します。戻り値fpassthru()関数は、ファイルポインタから読み取った文字数を返します。