PHP中fileatime和filectime的区别

3

在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。

2个回答

4

filemtime()函数会返回文件内容上一次修改的时间。

下面是手册中的一句话:

该函数返回一个文件数据块被写入时的时间,也就是文件内容被修改的时间。

编辑:

现在我看到你问的是fileatime()。因为fopen()并不会像预期那样更新修改时间,所以你需要使用touch()来更新修改时间。


我改变了文件内容,添加了一些字符。但仍然得到相同的结果。 - AL-zami
@AL-zami 啊,你在问关于fileatime()而不是filemtime()的问题,我的错误。我已经更新了我的答案。 - Rizier123

4
文件访问时间实际上应该是文件最后一次被访问的时间。但是,在今天的许多系统上,访问时间并没有得到维护。例如,在挂载(例如fstab)时,可以声明根本不更新访问时间。
在许多系统上,禁用此功能,因为经常进行小更改(如更改文件的访问时间)将使SSD更快地磨损。我猜测您所获得的访问时间是创建时间,因为在创建时只写入一次时间且从未更新。
因此,对于一个文件,您只能使用修改时间和创建时间(也应该作为单独的时间戳可用)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接