PHP | fstat 函数

怎样获取文件的统计信息

最近更新时间 2021-01-18 17:53:54

fstat 函数根据文件指针获取文件信息。

fstat() 函数返回包括文件信息的数组。如果出现错误返回 false。跟 stat() 函数相似。

函数定义

fstat ( resource $handle ) : array
// 源文件位于:ext/standard/file.c
# 函数定义

PHPAPI void php_fstat(php_stream *stream, zval *return_value)
{
  ...
  char *stat_sb_names[13] = {
    "dev", "ino", "mode", "nlink", "uid", "gid", "rdev",
    "size", "atime", "mtime", "ctime", "blksize", "blocks"
  };

#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
  ZVAL_LONG(&stat_blocks, stat_ssb.sb.st_blocks);
#else
  ZVAL_LONG(&stat_blocks,-1);
#endif
  /* Store numeric indexes in proper order */
  zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_dev);
  ...

  /* Store string indexes referencing the same zval*/
  zend_hash_str_add_new(Z_ARRVAL_P(return_value), stat_sb_names[0], strlen(stat_sb_names[0]), &stat_dev);
  zend_hash_str_add_new(Z_ARRVAL_P(return_value), stat_sb_names[1], strlen(stat_sb_names[1]), &stat_ino);
  ...
}

参数

  • checkhandle - 文件指针。

返回值

  • checkarray - 返回文件统计信息的数组。

示例1: - 使用 fstat() 函数获取文件统计信息。

<?php
/**
 * PHP fstat() 函数获取文件统计信息。
 *
 * @since Version 1.0.0
 * @filesource
 */

// 打开文件
$fileName = 'foo.txt';
$handle = fopen($fileName, 'r');

// 获取文件统计信息
$stat = fstat($handle);

print_r($stat);

// 关闭文件
fclose($handle);
Array
(
    ...
    [9] => 1610955457
    [10] => 1610955457
    [11] => 4096
    [12] => 8
    [ino] => 1289856
    [mode] => 33279
    [nlink] => 1
    [rdev] => 0
    [size] => 20
    [atime] => 1610955458
    [mtime] => 1610955457
    [ctime] => 1610955457
    ...
)
rss_feed