PHP의 touch() 함수는 파일의 접근 시간(atime)과 수정 시간(mtime)을 설정하는 데 사용됩니다. 이 함수는 성공하면 TRUE를, 실패하면 FALSE를 반환합니다. 파일이 존재하지 않는 경우에는 해당 파일을 생성한 후 타임스탬프를 설정합니다.
구문 (Syntax)
touch(filename, time, atime)
매개변수 (Parameters)
filename − 타임스탬프를 변경할 대상 파일의 이름(경로 포함)입니다. 필수 입력 값입니다.
time − 설정할 수정 시간입니다. Unix 타임스탬프 형식으로 지정하며, 생략할 경우 기본값은 현재 시스템 시간입니다.
atime − 설정할 접근 시간입니다. 역시 Unix 타임스탬프 형식이며, 지정하지 않으면 현재 시스템 시간으로 설정됩니다.
반환값 (Return Value)
touch() 함수는 타임스탬프 설정에 성공하면 TRUE, 실패하면 FALSE를 반환합니다.
예제 1 – 수정 시간을 현재 시간으로 변경
다음 예제는 new.txt 파일의 수정 시간을 현재 시스템 시간으로 변경하는 코드입니다.
<?php
$myfile = "new.txt";
// 수정 시간을 현재 시스템 시간으로 변경
if (touch($myfile)) {
echo ("$myfile 파일의 수정 시간이 현재 시간으로 설정되었습니다.");
} else {
echo ("$myfile 파일의 수정 시간을 업데이트할 수 없습니다.");
}
?>출력 결과
new.txt 파일의 수정 시간이 현재 시간으로 설정되었습니다.
이번에는 time 매개변수를 활용해 특정 과거 시점으로 수정 시간을 변경하는 예제를 살펴보겠습니다.
예제 2 – 수정 시간을 과거로 변경
아래 예제에서는 현재 시간에서 8시간(28800초)을 뺀 값을 사용하여 파일의 수정 시간을 과거 시점으로 설정합니다.
<?php
$myfile = "new.txt";
// 현재 시간에서 8시간 전의 타임스탬프 계산
$set_time = time() - 28800;
// 수정 시간 변경
if (touch($myfile, $set_time)) {
echo ("$myfile 파일의 수정 시간이 8시간 전으로 업데이트되었습니다.");
} else {
echo ("$myfile 파일의 수정 시간을 업데이트할 수 없습니다.");
}
?>출력 결과
new.txt 파일의 수정 시간이 8시간 전으로 업데이트되었습니다.
활용 팁
파일 자동 생성: touch() 함수는 지정한 파일이 존재하지 않으면 빈 파일을 생성하므로, 로그 파일 등을 초기화할 때 유용하게 활용할 수 있습니다.
캐시 관리: 캐시 만료 처리나 백업 스크립트에서 특정 시점 이후 변경된 파일을 찾는 조건으로 활용할 수 있습니다.
권한 확인: 함수가 FALSE를 반환하는 경우 대부분 파일 쓰기 권한 문제이므로, 디렉터리 권한을 함께 확인하는 것이 좋습니다.