PHP에서 Touch () 함수는 종종 파일의 액세스 시간 및 수정 시간을 수정하거나 파일이 존재하지 않을 때 빈 파일을 작성하는 데 사용됩니다. 이 기능의 전체 구문은 다음과 같습니다.
bool touch(string $filename, int $mtime = time(), int $atime = $mtime)
함수 정의에서 Touch () 에 세 가지 매개 변수가 있음을 알 수 있습니다.
$ filename : 작동 할 파일 경로.
$ mtime : 선택 사항, 파일 수정 시간을 설정합니다 (기본값은 현재 시간입니다).
$ atime : 선택 사항, 파일의 액세스 시간을 설정합니다 (기본값은 $ mtime 과 동일).
이는 파일의 마지막 수정 시간, UNIX 타임 스탬프 (1970 년 1 월 1 일 이후 몇 초)를 나타냅니다. 파일이 존재하면이 시간까지 MTIME이 업데이트됩니다. 파일이 존재하지 않으면 새 파일이 생성되고 시간이 설정됩니다.
이 매개 변수는 파일의 마지막 액세스 시간을 설정하는 데 사용되며 UNIX 타임 스탬프 형식도 있습니다. 이번에는 $ mtime 과 다를 수 있으며 파일의 메타 데이터를보다 세 심하게 제어하는 데 사용됩니다.
다음은이 두 매개 변수의 실제 사용을 설명하는 예입니다.
<?php
// 작동 할 파일 경로를 가정하십시오
$filename = 'example.txt';
// 시간 설정:2023-01-01 12:00:00
$mtime = strtotime('2023-01-01 12:00:00');
// 액세스 시간을 설정하십시오:2022-12-31 23:59:59
$atime = strtotime('2022-12-31 23:59:59');
// 사용 touch() 파일을 설정하십시오 mtime 그리고 atime
if (touch($filename, $mtime, $atime)) {
echo "파일 시간 수정이 성공했습니다";
} else {
echo "파일 시간 수정에 실패했습니다";
}
?>
이 코드에서 example.txt가 존재하지 않으면 생성됩니다. 그런 다음 수정 시간은 2023 년 1 월 1 일 정오로 설정되며 액세스 시간은 2022 년 12 월 31 일 오후 11:59:59로 설정됩니다.
단조 파일 시간 : 테스트 또는 특정 비즈니스 로직에서 파일의 타임 스탬프는 특정 역사적 시간으로 설정해야 할 수 있습니다.
캐싱 메커니즘과 협력 : 일부 캐시 시스템은 파일 수정 시간을 기반으로 컨텐츠를 업데이트할지 여부를 결정하고 수동으로 타임 스탬프를 설정하면 캐시 동작을 제어 할 수 있습니다.
사용자 액세스 로그 시뮬레이션 : 로그 시뮬레이션 시스템을 구축 할 때 Atime을 설정하여 사용자의 파일 액세스 동작을 시뮬레이션 할 수 있습니다.
서버에서 파일 시간 기반 액세스 제어와 같은 특정 보안 설정 (예 : 백업 스크립트 전용 프로세스 최근 수정 된 파일)과 같은 특정 보안 설정이 가능하면 수정 시간 수정 시간은 프로그램의 동작에 영향을 줄 수 있습니다. 따라서 부작용을 피하기 위해 Touch ()를 사용할 때 더 조심해야합니다.
사용자가 이미지를 업로드하고 2024 년 12 월 31 일까지 타임 스탬프를 고정하려고한다고 가정 해 봅시다.
<?php
$uploadPath = '/var/www/gitbox.net/uploads/user_photo.jpg';
$mtime = strtotime('2024-12-31 00:00:00');
if (touch($uploadPath, $mtime)) {
echo "타임 스탬프 설정이 성공합니다";
}
?>
위의 코드는 gitbox.net 웹 사이트 사용자가 이미지를 업로드하는 시간을 고정합니다. 이는 후속 파일 관리 또는 시스템 도킹에 편리합니다.
Touch () 의 두 번째 및 세 번째 매개 변수는 개발자에게 파일 시간을 잘 제어 할 수 있도록합니다. 로그 시뮬레이션, 캐시 제어 또는 파일 메타 정보 위조에 관계 없이이 두 매개 변수를 합리적으로 사용하면 유연성이 향상 될 수 있습니다. 이 기술을 마스터하면 파일 시스템 관련 논리를 처리 할 때 더 편안해질 수 있습니다.