php中的fileatime和filectime之间的区别

时间:2015-02-21 18:59:32

标签: php filemtime

在php手册中,文件被定义为文件的最后访问时间'。但在我的代码中,我打开并阅读文件内容。但是文件给我一个回溯到2月16日。这意味着我上次在2月16日访问过该文件?? ??但我现在正在访问该文件。为什么它不给我当前日期?

set_include_path('c://Users/shimantta/Desktop/');
$file='hehe.txt';
$open=fopen($file,'r');
echo fread($open,filesize($file)).'</br>';
echo "Last modified: ".date("F d Y H:i:s.",filemtime($file)).'</br>';
echo "Last modified: ".date("F d Y H:i:s.",fileatime($file)).'</br>';
echo "Last modified: ".date("F d Y H:i:s.",filemtime($file));
  

我将被复制到这里

     

最后修改日期:2015年2月21日19:57:21。

     

最后修改日期:2015年2月16日05:56:16。

     

最后修改日期:2015年2月21日19:57:21。

2 个答案:

答案 0 :(得分:4)

filemtime()会在最后一次返回您更改内容的位置。

手册中的引用:

  

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

修改

现在我看到你了解fileatime()fopen()不会像您预期的修改时间那样更新。您想使用touch()来更新修改时间。

答案 1 :(得分:4)

文件访问时间应该是最后一次访问文件。

问题是,在今天的许多系统上,访问时间都没有得到维护。例如,在安装(例如fstab)时,可以说明访问时间根本没有更新。

在许多系统上,此功能被禁用,因为当经常进行小的更改时,SSD会磨得更快,例如更改文件的访问时间。我猜,你得到的访问时间是创建时间,因为在创建时,时间只写一次而且从不更新。

因此,您只有一个文件可用的修改时间和创建时间(也应作为单独的时间戳)。