我想寫一個PHP腳本,它會告訴我今天創建了多少個文件夾(未修改一個!!)。用於監控文件夾創建的PHP腳本
Ex。假設給了路徑(如c:\ Data),所以我的腳本必須連續檢查 是否爲任何文件夾的新條目提供路徑。我已經使用http://php.net/manual/en/function.date-diff.php。但獲取修改後的文件夾的結果。
我想寫一個PHP腳本,它會告訴我今天創建了多少個文件夾(未修改一個!!)。用於監控文件夾創建的PHP腳本
Ex。假設給了路徑(如c:\ Data),所以我的腳本必須連續檢查 是否爲任何文件夾的新條目提供路徑。我已經使用http://php.net/manual/en/function.date-diff.php。但獲取修改後的文件夾的結果。
您可能希望嘗試使用cron像每隔一分鐘一樣啓動腳本,並檢查目錄列表之間的差異(來自之前和當前我的意思),而不是日期。這不是一個完美的解決方案,但它會起作用。
檢查目錄用一陽指:
$dirs = array_filter(glob('*'), 'is_dir');
Quote from @Alin Purcaru後對它們進行比較:
使用filectime。對於Windows,它將返回創建時間,對於Unix來說,這是最好的更改時間,因爲在Unix上沒有創建時間(在大多數文件系統中)。
使用參考文件比較文件的年齡允許您檢測使用數據庫的新文件。
// Path to the reference file.
// All files newer than this will be treated as new
$referenceFile="c:\Data\ref";
// Location to search for new folders
$dirsLocation="c:\Data\*";
// Get modification date of reference file
if (file_exists($referenceFile))
$referenceTime = fileatime($referenceFile);
else
$referenceTime = 0;
// Compare each directory with the reference file
foreach(glob($dirsLocation, GLOB_ONLYDIR) as $dir) {
if (filectime($dir) > $referenceTime)
echo $dir . " is new!";
}
// Update modification date of the reference file
touch($referenceFile);
另一種解決辦法是使用一個數據庫。任何不在數據庫中的文件夾都是新的。這確保不會捕獲修改的文件夾。
fileatime返回上次訪問時間(即修改時間)。當我們將$ referenceFile與$ dirsLocation進行比較時,if condirion變爲true,並且總是說這個文件是新的。 – user2473178
Bingo究竟是什麼樣的方式纔是正確的。 – user2473178
檢查如何在這裏找到目錄:http://stackoverflow.com/questions/2524151/php-get-all-subdirectories-of-a-given-directory?answertab=active#tab-top 並比較目錄數組與:[array_diff](http://php.net/manual/en/function.array-diff.php) –