我想检查服务器上的文件夹,查找每30分钟超过一小时的文件,因此我设置了一个cronjob来执行此操作。由于我是一个相当新的PHP我不得不浏览一下,找到一个不删除我的父/目标目录的解决方案,我找到了一个!
<?php
deleteContent("/var/www/html/downloads/");
function deleteContent($path){
try{
$iterator = new DirectoryIterator($path);
foreach ( $iterator as $fileinfo ) {
if($fileinfo->isDot())continue;
if($fileinfo->isDir()){
if(deleteContent($fileinfo->getPathname())){
if((time()-filectime($fileinfo->getPathname())) < 600 )
{
@rmdir($fileinfo->getPathname());
}
}
}
if($fileinfo->isFile()){
if((time()-filectime($fileinfo->getPathname())) < 600 )
{
@unlink($fileinfo->getPathname());
}
}
}
} catch ( Exception $e ){
// write log
return false;
}
return true;
}
?>
请注意,if((time()-filectime($fileinfo->getPathname())) < 600 )
是我找到解决时间问题的方法。
脚本不应该删除小于1小时的文件夹或文件,所以我花了我们现在的时间并减去它的时间,文件/文件夹最后一次更改并将其比较为600秒(10分钟)仅用于测试目的。
遗憾的是,无论何时创建文件,脚本仍会删除每个文件。
我做错了什么或有人有其他方法吗?
由于
答案 0 :(得分:1)
有时调用底层操作系统的功能是更好的方法
exec('find /var/www/html/downloads/ -type f -mmin +60 -exec rm {} \;');
执行官:http://php.net/manual/en/function.exec.php
php函数运行cli命令
查找,找到指定路径中的文件,类型为f(对于文件),文件时间大于60分钟,然后执行(运行)rm,这是linux删除(删除)