PHP 8.4.2 Released!

fstat

(PHP 4, PHP 5, PHP 7, PHP 8)

fstatオープンしたファイルポインタからファイルに関する情報を取得する

説明

fstat(resource $stream): array|false

ファイルポインタstreamによりオープンされたファイルの統計情報を取得します。 この関数は関数stat()に似ていますが、 ファイル名の代わりにオープンされたファイルポインタを指定するところが異なります。

パラメータ

stream

fopen() を使用して作成したファイルシステムポインタリソース。

戻り値

ファイルの統計情報の配列を返します。配列のフォーマットについては stat()のマニュアルをご覧ください。 失敗時に false を返します。

例1 fstat() の例

<?php

// ファイルをオープンする
$fp = fopen("/etc/passwd", "r");

// 統計情報を収集する
$fstat = fstat($fp);

// ファイルをクローズする
fclose($fp);

// 連想配列部のみ表示する
print_r(array_slice($fstat, 13));

?>

上の例の出力は、 たとえば以下のようになります。

Array
(
    [dev] => 771
    [ino] => 488704
    [mode] => 33188
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 1114
    [atime] => 1061067181
    [mtime] => 1056136526
    [ctime] => 1056136526
    [blksize] => 4096
    [blocks] => 8
)

注意

注意: この関数では、 リモートファイル を 使用することはできません。これは、処理されるファイルがサーバーの ファイルシステムによりアクセスできる必要があるためです。

add a note

User Contributed Notes 2 notes

up
1
broom at alturnanetworks dot com
16 years ago
Another ftp_get_contents() approach, using a temperary stream handler. Returns file contents of remote file as string.

<?php
function ftp_get_contents ($conn_id, $remote_filename) {
//Create temp handler:
$tempHandle = fopen('php://temp', 'r+');

//Get file from FTP assuming that it exists:
ftp_fget($conn_id, $tempHandle, $remote_filename, FTP_ASCII, 0));

//Getting detailed stats to check filesize:
$fstats = fstat($tempHandle);

return
fread($tempHandle, $fstats['size']);
}
?>

(It is recommended to add some error handling)
up
0
tom at bitworks dot de
7 years ago
Remember atime will not be updated by simple read access to the file unless you take care for that in the mounting parameters of your filesystem.

Instead of atime, mtime will be delivered. But mtime only will be updated, if the contents of the file has changed.

Due to this behavior take care in your Session-System. Using session_start() will not be sufficiant to keep your sessions alive. You should write into the Session, e. g. :

$_SESSION = time();

That retriggers your mtime and atime, even if the mounting parameter for atime is set to "noatime" or is missing, dependent of the used file System.
To Top