테스트 사이트 - 개발 중인 베타 버전입니다

unlink 시에 시간 설정이 가능 할까요? 채택완료

HaninPage 9년 전 조회 3,506
$source2 = "$g4[path]/data/eos/ex/".$entry2.""; 
    @unlink($source2);
이렇게 해서 모든 파일이 잘 삭제는 되는데요
문제는 글을 작성 하고 있는 사람의 정상적인 파일까지 모두 날리는게 걱정이 되네요
파일이 업로드 된지 한시간이 지난 파일만 대상으로 unlink 를 하려면 어떻게 해야 될까요?
ftp 상에 최종수정? 이라고 써있는게 업로드 타임 인거 같은데 서버에 올라온지 1시간이 지난 파일만 삭제 하고 싶습니다.
댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

$h = time() - 3600;

$mod = filemtime($source2);

if($h > $mod) unlink($source2);

이런 식으로 하면 되지 않을까요? 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

H
HaninPage
9년 전
이렇게 해주니까 바로 삭제는 안되는거 같습니다. 감사합니다. 그런데 echo $mod 로 보니까 1465525291 라는 값이 출력 되던데 이게 무엇을 의미 하는건가요? 찾아 보니까 파일이 수정된 시간이라는데 이 값은 시간같지가 않아서요^^:
왕계란
9년 전
unixtime이라는 건 아시죠?
echo now();
이렇게 하면 현재 시간이 unixtime으로 나옵니다.
해당 파일들의 최종 수정 시간을 저렇게 바꾼 겁니다.
결과는 같아요.
echo date("Y-m-d H:i:s", $mod);
H
HaninPage
9년 전
결론적으로 서버 시간을 기준으로 3600 초 이전꺼는 못 지우는거겠군요. 클라이언트 시간과는 상관 없이요~!
왕계란
9년 전
php는 서버 사이드 랭귀지라서 클라이언트 시간을 갖고 오는 게 아니라 서버를 기준으로 시간을 갖고 옵니다.
그러니 서버가 만약 해외에 있다거나 했을 땐 시간이 좀 다를 수도 있으니 그걸 현재 클라이언트 시간과 맞추기 위해서는 $h 이 부분을 수정하시면 됩니다.
echo date("Y-m-d H:i:s", time());
이렇게 했을 때 현재 시간이랑 별 차이 없으면 그냥 두시면 되겠지요.
- 3600을 현재 시간을 비교해서 차이나는 걸 더하거나 빼거나 해서 작업하시면 될 것 같습니다.
H
HaninPage
9년 전
어차피 filemtime 이 서버 시간으로 올라 갈꺼고 절대값으로 3600 초이기 때문에 서버기준시간이 어느나라로 되어 있던지 상관 없는거 아닐까요??
왕계란
9년 전
말씀하신 게 맞습니다.
간혹 ftp로 접속하면 시간이 좀 애매하게 나오는 서버가 있어서요.
그냥 참고만 하시라고 글 남긴 거니 크게 신경 안 쓰셔도 될 듯합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인