不要删除小于1小时的文件

时间:2016-09-19 03:46:39

标签: php

我想检查服务器上的文件夹,查找每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分钟)仅用于测试目的。

遗憾的是,无论何时创建文件,脚本仍会删除每个文件。

我做错了什么或有人有其他方法吗?

由于

1 个答案:

答案 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删除(删除)