fstat

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

fstat使用打开的文件指针获取有关文件的信息

描述

fstat(resource $stream): array|false

收集由文件指针 stream 打开的文件的统计信息。此函数类似于 stat() 函数,区别在于它操作的是打开的文件指针,而不是文件名。

参数

stream

一个文件系统指针 resource,通常使用 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
)

注意

注意: 此函数不适用于 远程文件,因为要检查的文件必须通过服务器的文件系统访问。

添加注释

用户贡献的注释 2 个注释

broom at alturnanetworks dot com
15 年前
另一种 ftp_get_contents() 方法,使用临时流处理程序。将远程文件的原始内容作为字符串返回。

<?php
function ftp_get_contents ($conn_id, $remote_filename) {
// 创建临时处理程序:
$tempHandle = fopen('php://temp', 'r+');

// 从 FTP 获取文件,假设文件存在:
ftp_fget($conn_id, $tempHandle, $remote_filename, FTP_ASCII, 0));

// 获取详细统计信息以检查文件大小:
$fstats = fstat($tempHandle);

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

(建议添加一些错误处理)
tom at bitworks dot de
7 年前
请记住,除非您在文件系统的挂载参数中进行处理,否则简单的读取文件访问不会更新 atime。

mtime 将会传递,而不是 atime。但只有在文件内容更改时才会更新 mtime。

由于这种行为,请在您的会话系统中注意。使用 session_start() 不会足以保持您的会话活动。您应该写入会话,例如

$_SESSION = time();

这会重新触发您的 mtime 和 atime,即使 atime 的挂载参数设置为“noatime”或缺失,这取决于使用的文件系统。
To Top