![](/img/trans.png)
[英]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.