[英]Error when using php filemtime() and angularjs to grab file's latest modification time
[英]filectime vs filemtime for file modification time?
我想,以确保某些图像不会被缓存时,他们正在修改,但是这将是更适合这个filectime
或filemtime
?
我真的看不出与 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
更适合您的应用:
当文件的数据块被写入时,即文件内容被改变的时间
如果你不想要?
要始终出现, filemtime
将filemtime
设置为变量并对其进行测试:
$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.