fstat

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

fstat通过已打开的文件指针取得文件信息

说明

fstat(resource $stream): array|false

获取由文件指针 stream 所打开文件的统计信息。本函数和 stat() 函数相似,除了它是作用于已打开的文件指针而不是文件名。

参数

stream

文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

返回值

返回一个数组具有该文件的统计信息,该数组的格式详细说明于手册中 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 add a note

User Contributed Notes 2 notes

up
0
tom at bitworks dot de
6 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.
up
0
broom at alturnanetworks dot com
15 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)
To Top