#!/home1/ysoftman/local/php/bin/php -q
<?
// 현재 시간을 체크하여 파일 및 디렉토리 삭제
function DelDir($dir)
{
/// 현재 시간 알기
$CurTime = date("Y-m-d-H-i-s", time());
// 년 월 일 시 분 초 추출
$temp=explode("-", $CurTime);
$year=$temp[0];
$month=$temp[1];
$day=$temp[2];
$hour=$temp[3];
$min=$temp[4];
$sec=$temp[5];
//printf("CurrentTime : %s-%s-%s-%s-%s-%s\n", $year, $month, $day, $hour, $min, $sec);
if (substr($dir,-1) != "/")
{
// 현재 디렉토문자열 뒤에 / 붙이기
$dir .= "/";
}
if (!is_dir($dir))
{
return false;
}
if (($dh = opendir($dir)) !== false)
{
while (($entry = readdir($dh)) !== false)
{
print("$dir$entry\n");
if ($entry != "." && $entry != "..")
{
if (is_file($dir.$entry) || is_link($dir.$entry))
{
// 파일인경우 최근 수정 시간을 알아본다.
$CurFileTime = date("Y-m-d-H-i-s", filemtime($dir.$entry));
// 년 월 일 시 분 초 추출
$temp=explode("-", $CurFileTime);
$fyear=$temp[0];
$fmonth=$temp[1];
$fday=$temp[2];
$fhour=$temp[3];
$fmin=$temp[4];
$fsec=$temp[5];
printf("CurrentFileTime : %d-%d-%d-%d-%d-%d\n", $fyear, $fmonth, $fday, $fhour, $fmin, $fsec);
// 10분 이전의 파일은 삭제한다
printf("CurrentMin-FileMin = %d\n", abs($min-$fmin));
if (abs($min-$fmin) >= 10)
{
print("$dir$entry --> unlink(delete)\n");
unlink($dir.$entry);
}
}
else if (is_dir($dir.$entry))
{
DelDir($dir.$entry);
}
}
}
closedir($dh);
// 파일이 없는 빈 디렉토리일 경우만 삭제된다.
rmdir($dir);
return true;
}
return false;
}
// 디렉토리(폴더) 리스트 알아오기
function DirList($dirPath)
{
if (!is_dir($dirPath))
{
print("$dirPath 없음");
return false;
}
if ($handle = opendir($dirPath))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
if (is_dir($dirPath."/".$file))
{
$dirList[] = $file;
}
}
}
closedir($handle);
}
if (count($dirList)<0)
{
return false;
}
return $dirList;
}
// 날짜 디렉토리(폴더) 찾아서 삭제하기
function CheckTargetDir($BaseDir)
{
/// 현재 시간 알기
$CurTime = date("Y-m-d-H-i-s", time());
// 년 월 일 시 분 초 추출
$temp=explode("-", $CurTime);
$year=$temp[0];
$month=$temp[1];
$day=$temp[2];
$hour=$temp[3];
$min=$temp[4];
$sec=$temp[5];
printf("CurrentTime : %s-%s-%s-%s-%s-%s\n", $year, $month, $day, $hour, $min, $sec);
// 년 폴더 리스트 파악
$YearDirArr = DirList($BaseDir);
// 년 폴더 안에 달 폴더가 있으면
if (count($YearDirArr) > 0)
{
foreach($YearDirArr as $YearDirName)
{
// 현재 년 이전의 폴더가 있다면
if ($year >= $YearDirName)
{
// 년 폴더 안으로 들어가기
$TargetDir = $BaseDir."/".$YearDirName;
printf("Current TargetDir : %s\n", $TargetDir);
// 년 폴더 안의 달 폴더 리스트 파악
$MonthDirArr = DirList($TargetDir);
// 년 폴더 안에 달 폴더가 있으면
if (count($MonthDirArr) > 0)
{
foreach($MonthDirArr as $MonthDirName)
{
// 현재 달 이전의 달 폴더가 있다면
if ($month >= $MonthDirName)
{
// 달 폴더 안으로 들어가기
$TargetDir = $BaseDir."/".$YearDirName."/".$MonthDirName;
printf("Current TargetDir : %s\n", $TargetDir);
// 달 폴더의 안의 일 폴더 리스트 파악
$DayDirArr = DirList($TargetDir);
// 달 폴더 안에 일 폴더가 있으면
if (count($DayDirArr) > 0)
{
foreach($DayDirArr as $DayDirName)
{
printf("Current TargetDir : %s\n", $TargetDir);
// 현재 일보다 2 일전의 폴더가 있다면
//if ($day-2 >= $DayDirName)
{
// 일 폴더를 지워야 할 폴더로 설정
$TargetDir = $BaseDir."/".$YearDirName."/".$MonthDirName."/".$DayDirName;
// 일폴더 지우기
DelDir($TargetDir);
}
}
}
// 달 폴더 안에 일 폴더가 아무것도 없으면
else
{
// 현재 달 폴더 지우기
DelDir($TargetDir);
}
}
}
}
// 년 폴더 안에 달 폴더가 아무것도 없으면
else
{
// 현재 년 폴더 지우기
DelDir($TargetDir);
}
}
}
}
}
$BaseDir = "/home/test";
CheckTargetDir($BaseDir);
?>
comments:
댓글 쓰기