파일이 많은 폴더를 읽고 있습니다.
파일 생성 날짜를 어떻게 알 수 있습니까? 나는 그것을 얻는 직접적인 기능을 보지 못합니다.
있다 filemtime
및 filectime
.
파일이 수정되지 않은 경우 어떻게됩니까?
답변:
filectime을 사용하십시오 . Windows의 경우 생성 시간 을 반환하고 Unix의 경우에는 생성 시간이 없기 때문에 얻을 수있는 가장 좋은 변경 시간을 반환합니다 (대부분의 파일 시스템에서).
또한 일부 유닉스 텍스트에서는 파일의 ctime을 파일 생성 시간이라고합니다. 이것은 잘못된 것입니다. 대부분의 Unix 파일 시스템에는 Unix 파일 생성 시간이 없습니다.
filemtime
Linux의 경우 filectime
소유자, 권한 변경 및 다른 작업 중에 변경 되므로 더 정확하고 정확 합니다. 당신은 더 많은 기회를 사용하여 Linux에서 생성 시간을 얻기 위해 얻을 것이다filemtime
다음은 PHP 문서에서 가져온 예제 코드입니다. https://www.php.net/manual/en/function.filemtime.php
// outputs e.g. somefile.txt was last changed: December 29 2002 22:16:23.
$filename = 'somefile.txt';
if (file_exists($filename)) {
echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
코드는 파일 이름을 지정한 다음 파일이 있는지 확인한 다음를 사용하여 수정 시간을 표시합니다 filemtime()
.
filemtime()
파일의 경로 인 1 개의 매개 변수를 사용하며 이는 상대 또는 절대적 일 수 있습니다.
filemtime()
는 수정 시간을 반환합니다.
나는이 주제가 매우 오래되었다는 것을 알고 있지만, 누군가가 답을 찾고 있다면, 나는 내 솔루션을 게시하고 있습니다.
이 솔루션은 파일 시작 부분에 추가 데이터가 있어도 괜찮은 경우에 작동합니다.
기본적으로 아이디어는 파일이 존재하지 않는 경우 파일을 만들고 첫 번째 줄에 현재 날짜를 추가하는 것입니다. 다음으로, 첫 번째 줄을으로 읽고, fgets(fopen($file, 'r'))
그것을 DateTime
객체 또는 다른 것으로 바꾸고 (이상한 형식으로 저장하지 않는 한 당연히 원시적으로 사용할 수 있습니다) 짜잔-생성 날짜가 있습니다! 예를 들어 30 일마다 로그 파일을 새로 고치는 스크립트는 다음과 같습니다.
if (file_exists($logfile)) {
$now = new DateTime();
$date_created = fgets(fopen($logfile, 'r'));
if ($date_created == '') {
file_put_contents($logfile, date('Y-m-d H:i:s').PHP_EOL, FILE_APPEND | LOCK_EX);
}
$date_created = new DateTime($date_created);
$expiry = $date_created->modify('+ 30 days');
if ($now >= $expiry) {
unlink($logfile);
}
}