2012-02-06 77 views
3

總之如何在不知道文件擴展的情況下通過名稱取消鏈接()?

我們有一個叫做clients.(unique parameter)的文件。而現在我們想要unlink()呢,但由於我們不知道文件擴展名,我們該如何成功?

更長的故事

我有一個緩存系統,其中md5()數據庫查詢的文件名和緩存過期日期是擴展。

實施例:896794414217d16423c6904d13e3b16d.3600

但有時日期改變的期滿。所以對於最終的解決方案,文件擴展名應該被忽略。

我能想到的唯一的辦法是搜索的目錄,並匹配文件名,然後拿到文件擴展名。

回答

8

使用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); 
    } 
} 
+0

Ty,效果很好。我想沒有更好的方法,然後foreach循環。雖然它比readdir()循環更好。幸運的是,我不需要經常手動刪除緩存,所以優化這不是prio。 – 2012-02-06 17:30:35

1

您在猜測中正確地搜索匹配文件名的目錄。有多種方法,你可以採取:

readdir

glob由邁克爾

建議

你也可以得到ls {$target_dir} | grep {$file_first_part}輸出,然後斷開鏈接生成的字符串(假設匹配有問題的文件夾中找到)。

相關問題