我们有一个叫做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