2011-09-06 83 views
1

我看着這個其他問題:如何獲取上次修改目錄的時間?

Directory last modified date

告訴我的東西是如何工作的,但並沒有真正提供任何解決方案。我如何獲得上次修改目錄的時間?我將使用這段時間來確定是否需要清除緩存,其內容是從目錄的內容計算出來的。

另一種方法是逐個遞歸遍歷每個文件和子文件夾,但這可能完全否定緩存的好處。據我所知,文件/文件夾的「mtime」和其他元數據被緩存在某處,並且實際上每次你想檢查時都不需要讀文件(這就是爲什麼在每個memcached文件上檢查mtime仍然是比加載文件本身更快,即使文件很小)。

那麼...有沒有什麼好的,快速的方法來獲取整個目錄的最後修改時間戳?

回答

0

那麼你總是可以做ls -la來獲取目錄文件的時間戳,但我不認爲這就是你要求的。

您不包括什麼語言或環境中,你希望這個解決了,但它是相當容易在PHP中:

$filename = 'includes/'; 
if (file_exists($filename)) { 
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename)); 
} 
//echos includes/ was last modified: September 06 2011 17:51:10. 

這些信息不會獲取由操作系統緩存,但你可以擦高速緩存與:

http://www.php.net/manual/en/function.clearstatcache.php

+0

我在Python的工作,但我想如果這是可行的會有各種語言模擬。這只是最後一次修改「目錄」,並且不會在單個文件中找到更改,對吧? –

+0

嗯,是的,不,filemtime方法可以用於目錄或文件。我的例子已設置爲檢查一個目錄。但是,檢查文件會非常容易。只需使用opendir()來讀取目錄中的所有文件,並且您也可以輕鬆地檢查這些文件。 – Landon

+0

問題是目錄很深(5-6級?),裏面有很多文件。除非來自opendir()的文件列表也被緩存,否則它的檢查緩存失效花費可能比緩存首先給我的花費更多。我會運行一些基準。 –

相關問題