1

根据:http ://www.php.net/manual/en/function.filectime.php

“在大多数 Unix 文件系统中,当文件的 inode 数据发生更改时,文件被视为已更改;也就是说,当 inode 中的权限、所有者、组或其他元数据更新时。”

但是,当我访问和写入文件时运行 Debian linux (uname -r: 2.6.26-2-686),比如使用 PHP 的

$fh = fopen($file, 'a');
fwrite($fh, "hello world"); 
fclose($fh);

修改时间 (filemtime) 和更改时间 (filectime) 都会得到更新。据我了解,只有当文件的首选项(权限、所有权、名称)发生变化而不是内容本身时,ctime 才会发生变化。

clearstatcache();

echo "$file was last changed: " . date("F d Y H:i:s.", filectime($file)). "<br>";
echo "$file was last modified: " . date("F d Y H:i:s.", filemtime($file)). "<br>";
echo "$file was last accessed: " . date("F d Y H:i:s.", fileatime($file)). "<br>";
4

2 回答 2

0

当你改变文件数据时——你改变了 mtime,因为 mtime(修改时间)是 INODE 的一部分,所以当 mtime 改变时,文件元数据也会改变,因此 ctime(改变时间)也会改变 :)

于 2013-09-17T21:13:15.740 回答
0

没关系,在阅读http://www.kavoir.com/2009/04/linux-the-differences-between-file-times-atime-accessed-time-ctime-changed-time-and-mtime-modified-time 之后。 html

它声明:“ctime – 更改时间,或文件或目录的最后更改时间,每当您更改和更新文件,例如更改文件所有权或权限或修改文件内容时,文件的 ctime 都会更新为当前时间”

于 2010-07-26T02:40:34.403 回答