我們有一個叫做clients.(unique parameter)
的文件。而現在我們想要unlink()
呢,但由於我們不知道文件擴展名,我們該如何成功?
更長的故事
我有一個緩存系統,其中md5()
數據庫查詢的文件名和緩存過期日期是擴展。
實施例:896794414217d16423c6904d13e3b16d.3600
但有時日期改變的期滿。所以對於最終的解決方案,文件擴展名應該被忽略。
我能想到的唯一的辦法是搜索的目錄,並匹配文件名,然後拿到文件擴展名。
我們有一個叫做clients.(unique parameter)
的文件。而現在我們想要unlink()
呢,但由於我們不知道文件擴展名,我們該如何成功?
更長的故事
我有一個緩存系統,其中md5()
數據庫查詢的文件名和緩存過期日期是擴展。
實施例:896794414217d16423c6904d13e3b16d.3600
但有時日期改變的期滿。所以對於最終的解決方案,文件擴展名應該被忽略。
我能想到的唯一的辦法是搜索的目錄,並匹配文件名,然後拿到文件擴展名。
使用glob()
:
$files = glob("/path/to/clients.*");
foreach ($files as $file) {
unlink($file);
}
如果需要,你可以檢查由3210返回的每個文件的filemtime()
對它們進行排序,所以你只刪除最早的,例如。
// Example: Delete those older than 2 days:
$files = glob("./clients.*");
foreach ($files as $file) {
if (filemtime($file) < time() - (86400 * 2)) {
unlink($file);
}
}
您在猜測中正確地搜索匹配文件名的目錄。有多種方法,你可以採取:
readdir
glob
由邁克爾
你也可以得到ls {$target_dir} | grep {$file_first_part}
輸出,然後斷開鏈接生成的字符串(假設匹配有問題的文件夾中找到)。
Ty,效果很好。我想沒有更好的方法,然後foreach循環。雖然它比readdir()循環更好。幸運的是,我不需要經常手動刪除緩存,所以優化這不是prio。 – 2012-02-06 17:30:35