PHP에서 UNLNK 함수를 이용한 일정기간 지난 파일 삭제하기

안녕하세요. AkibaTV입니다.

이번에 소개할 내용은 PHP에서 UNLNK 함수를 이용한 일정기간 지난 파일 삭제하기 입니다.

웹서버를 운영을 하시다 보시면 불필요한 로그파일이나 이미지파일등

오래되고 불필요한 데이터가 많이 쌓이게 됩니다.

불필요한 데이터가 많이 쌓일수록 서버의 성능도 저하될뿐 아니라 디스크의 용량 문제도

발생하기때문에 유지 관리비도 점점 상승하는 문제가 발생하게 됩니다.

그래서 PHP를 이용한 간단하게 해당하는 폴더안의 일정기간이 지난 데이터 파일을

삭제하는 방법을 알아보도록 하겠습니다.

Visual Studio Code(비주얼 스튜디오 코드)를 실행하시고 파일명은 php_old_file_delete.php로 만드시고

아래와 같이 코딩을 해주시기 바랍니다.

1
2
3
4
5
6
7
8
9
10
11
<?php
$fileName = "./test.txt";
$mtime = filemtime($fileName);


// 최종 수정일이 30일 이상인 파일만 삭제
if (file_exists($fileName) && (time() - $mtime >= 24*60*60*30)) {
// 삭제 처리
unlink($fileName);
}
?>

image

이제 정상적으로 삭제가 되는지 확인을 위해서

작성하신 소스파일을 라즈베리파이의 웹폴더에 올려주시기 바랍니다.

웹폴더에 테스트용 test.txt파일도 추가를 해주시기 바랍니다.

image

test.txt파일은 새로 추가한 파일로서 현재의 날짜와 시간이 되겠습니다.

파일 삭제 PHP를 실행해도 삭제가 되지 않겠습니다.

웹브라우저를 실행하시고 http://라즈베리파이서버 IP/php_old_file_delete.php

위의 주소를 실행해 주시기 바랍니다.

image

실행후 다시 test.txt파일을 확인해 보시면

image

여전히 파일이 남아있는것을 확인 하실수 있습니다.

그러면 test.txt파일의 날짜와 시간이 30일 이전으로 돌려보도록 하겠습니다.

라즈베리파이에서 날짜와 시간을 변경을 하실때는 Touch명령어를 이용하게 됩니다.

라즈베리파이 또는 리눅스에서 TOUCH를 이용해 날짜 변경하기를 참고해 주시기 바랍니다.

아래의 명령어를 입력해서 날짜와 시간을 변경해 주세요.

1
$ touch -t 202005231530 ./test.txt

image

image

test.txt파일의 날짜와 시간이 변경된것을 확인하실수 있습니다.

그러면 다시 웹브라우저를 실행하시고 http://라즈베리파이서버 IP/php_old_file_delete.php

위의 주소를 실행해 주시기 바랍니다.

image

image

위와같이 파일이 삭제가 된것을 확인하실수 있습니다.