繁体   English   中英

filectime 与 filemtime 的文件修改时间?

[英]filectime vs filemtime for file modification time?

我想,以确保某些图像不会被缓存时,他们正在修改,但是这将是更适合这个filectimefilemtime

我真的看不出与 php 手册有多大区别? 要么更快?

<img src="/images/123.png?<?=md5(@filectime("/images/123.png"))?>" />
<img src="/images/123.png?<?=md5(@filemtime("/images/123.png"))?>" />

还有这样的函数不会在文件错误时发出e_warning吗?

理想情况下,我不想只提供问号<img src="/images/123.png?" /> <img src="/images/123.png?" />

当您处理图像缓存时, filectime是不合适的 - 它标志着最后一次:

当来自 inode 的权限、所有者、组或其他元数据更新时

您想知道图像文件内容是否已更改 - 是否已调整大小、裁剪或完全替换。

因此, filemtime更适合您的应用:

当文件的数据块被写入时,即文件内容被改变的时间

如果你不想要? 要始终出现, filemtimefilemtime设置为变量并对其进行测试:

$filemtime = @filemtime("/images/123.png");

<img src="/images/123.png<?= $filemtime ? '?' . $filemtime : ''?>" />

更好的是,在使用filemtime之前使用file_exists()测试文件是否存在。

注意:在大多数 Unix 文件系统中,当文件的 inode 数据发生变化时,就认为文件发生了变化; 也就是说,当来自 inode 的权限、所有者、组或其他元数据更新时。 另请参见 filemtime()(当您想在网页上创建“上次修改”页脚时要使用它)和 fileatime()。

手册

所以你想使用filemtime

filemtime:表示数据或内容发生变化或修改的时间,不包括所有权或所有者组等元数据。

filectime:表示文件的元数据或inode数据发生改变的时间,例如权限、所有权或组的改变。

所以filemtime是解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM