如何在php中根据创建日期从目录中删除文件?
2022-08-30 14:45:55
我有一个存储html文件的缓存文件夹。它们在需要时被覆盖,但很多时候,很少使用的页面也缓存在那里,最终只是使用空间(5周后,驱动器已满超过270万个缓存文件)。
循环访问包含数十万个文件的目录并删除超过 1 天的文件的最佳方法是什么?
我有一个存储html文件的缓存文件夹。它们在需要时被覆盖,但很多时候,很少使用的页面也缓存在那里,最终只是使用空间(5周后,驱动器已满超过270万个缓存文件)。
循环访问包含数十万个文件的目录并删除超过 1 天的文件的最佳方法是什么?
我认为您可以通过使用readdir循环访问目录并根据时间戳删除来解决此问题:
<?php
$path = '/path/to/files/';
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
$filelastmodified = filemtime($path . $file);
//24 hours in a day * 3600 seconds per hour
if((time() - $filelastmodified) > 24*3600)
{
unlink($path . $file);
}
}
closedir($handle);
}
?>
将选择早于 24 小时(24 小时乘以每小时 3600 秒)的文件。如果你想要几天,它应该读7 * 24 * 3600,对于超过一周的文件。if((time() - $filelastmodified) > 24*3600)
另请注意,返回上次修改文件的时间,而不是创建日期。filemtime
它应该是
if((time()-$filelastmodified) > 24*3600 && is_file($file))
以避免 和 目录的错误。.
..