php中fileatime和filectime之间的区别


difference between fileatime and filectime in php

在php中,手动fileatime被定义为"文件的最后访问时间"。但在我的代码中,我打开并读取了文件内容。但fileatime给我的日期是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。

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

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

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

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

filemtime()会为您提供上次更改内容的时间。

以及手册中的一句话:

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

编辑:

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