fstat

関数の概要

PHPの fstat 関数は、開いているファイルポインタの情報を取得するための関数です。ファイルのサイズ、作成日時、パーミッションなどの詳細なファイル情報を配列として取得でき、ファイル操作の状態確認やデバッグに役立ちます。

パラメータの説明

  • resource $stream – ファイルポインタリソース。fopenなどで開いたファイルハンドルを指定します。

戻り値

ファイルの統計情報を連想配列として返します。配列には以下のような情報が含まれています。

  • dev – デバイス番号
  • ino – イノード番号
  • mode – ファイルの種類とパーミッション
  • nlink – ハードリンクの数
  • uid – 所有者のユーザーID
  • gid – 所有者のグループID
  • rdev – 特殊ファイルのデバイスID
  • size – ファイルサイズ(バイト数)
  • atime – 最終アクセス時間(Unixタイムスタンプ)
  • mtime – 最終変更時間(Unixタイムスタンプ)
  • ctime – 最終状態変更時間(Unixタイムスタンプ)
  • blksize – ブロックサイズ
  • blocks – 使用ブロック数

失敗した場合は false を返します。

使用例

基本的な使い方

<?php
$fp = fopen("example.txt", "r");
if ($fp) {
    $info = fstat($fp);
    print_r($info);
    fclose($fp);
} else {
    echo "ファイルを開けませんでした。";
}
?>

この例では、ファイルを開いて fstat で情報を取得しています。結果としてファイル情報が配列で表示されます。

ファイルサイズの取得に利用する例

<?php
$fp = fopen("example.txt", "r");
if ($fp) {
    $info = fstat($fp);
    echo "ファイルサイズ: " . $info['size'] . " バイト";
    fclose($fp);
} else {
    echo "ファイルを開けませんでした。";
}
?>

ファイルのサイズだけを取り出して表示する実用的な使い方です。

最終変更日時を取得して表示する例

<?php
$fp = fopen("example.txt", "r");
if ($fp) {
    $info = fstat($fp);
    echo "最終更新日時: " . date("Y-m-d H:i:s", $info['mtime']);
    fclose($fp);
} else {
    echo "ファイルを開けませんでした。";
}
?>

ファイルの最終更新日時(mtime)を人間が読みやすい形式に変換して表示しています。

関連する関数

  • stat – ファイル名を指定してファイル情報を取得する関数
  • fopen – ファイルを開く関数
  • fclose – 開いたファイルを閉じる関数
  • filesize – ファイルサイズを取得する関数(ファイル名指定)
  • filectime, filemtime, fileatime – ファイルの作成・変更・アクセス時間を取得する関数

まとめ

fstat は、PHPで既に開いているファイルポインタの詳細な情報を効率よく取得できる便利な関数です。ファイルのサイズや更新日時などの属性情報を調べたいときに役立ちます。ファイル名ではなくファイルポインタを使う場面で活躍し、stat と併せて使うことで柔軟なファイル操作が可能になります。