我们可以获得目录的修改时间和大小,即统计数据吗?

时间:2010-05-05 12:09:06

标签: php

我们可以获取目录的修改时间和大小,即php中的统计数据吗?怎么样?

3 个答案:

答案 0 :(得分:12)

是。您可以使用stat功能

$stat = stat('\path\to\directory');
echo 'Modification time: ' . $stat['mtime']; // will show unix time stamp.
echo 'Size: ' . $stat['size']; // in bytes.

答案 1 :(得分:4)

您可以使用filemtimeSplFileInfo::getMTime获得修改时间。

至于获取目录的大小,是指其中所有内容的文件大小(可能听起来像一个愚蠢的问题, size 是不明确的)?

如果您只想记录目录中记录的'filesize',那么filesizeSplFileInfo::getSize就足够了。

$dir = new SplFileInfo('path/to/dir');
printf(
    "Directory modified time is %s and size is %d bytes.", 
    date('d/m/Y H:i:s', $dir->getMTime()),
    $dir->getSize()
);

答案 2 :(得分:4)

对我来说使用filemtime工作得很好。

实施例

<?php

$path_to_file = '/tmp/';
echo filemtime($path_to_file); // 1380387841

即使它被称为“文件mtime”,它也适用于目录。

警告/ Gotcha

确保您检查的文件或目录存在,否则您将得到类似的内容:

  

filemtime():第3行的test.php中的/ asdfasdfasdf的stat失败

可能的修复包括'正确':

$path = '/tmp/';
$mtime = file_exists($path)?filemtime($path):'';

通过使用错误抑制运算符(@)而不那么冗长但又简洁:

$path = '/tmp/';
$mtime = @filemtime($path);

来自manual

filemtime()

  

int filemtime (字符串 $ filename

     

此函数返回写入文件数据块的时间,即文件内容更改的时间。