不要删除年龄小于1小时的文件
问题描述:
我想检查我的服务器上的文件夹是否每隔30分钟超过一个小时,因此我设置了一个cronjob来执行此操作。由于我相当新的PHP,我不得不浏览一下,找到一个解决方案,不删除我的父母/目标目录,我找到了一个!不要删除年龄小于1小时的文件
<?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分钟)仅用于测试目的。
不幸的是,脚本仍然会删除每个文件,而不管它何时创建。
我做错了什么或有没有人有另一种方法?
感谢
答
有时调用底层操作系统的功能是更好的方法
exec('find /var/www/html/downloads/ -type f -mmin +60 -exec rm {} \;');
高管:http://php.net/manual/en/function.exec.php
PHP函数来运行CLI命令 发现,该发现在指定的路径中的文件,文件时间大于60分钟的类型f(对于文件),然后执行(run)rm这是linux删除(删除)
打印time()和filectim e($ fileinfo-> getPathname()函数并检出它们。 – Naga