programing

PHP: 파일 생성 날짜를 얻으려면 어떻게 해야 합니까?

goodsources 2022. 11. 19. 11:36
반응형

PHP: 파일 생성 날짜를 얻으려면 어떻게 해야 합니까?

나는 파일이 많은 폴더를 읽고 있다.

파일 생성 날짜를 얻으려면 어떻게 해야 합니까?그것을 얻을 수 있는 직접적인 기능은 보이지 않는다.

있다filemtime그리고.filectime.

그리고 파일이 수정되지 않으면 어떻게 됩니까?

피렉타임을 사용하다.Windows 에서는 작성 시간이 반환되고 Unix 에서는 작성 시간이 없기 때문에(대부분의 파일 시스템에서는), Unix 에서는 얻을 수 있는 최선의 변경 시간이 반환됩니다.

또, 일부의 Unix 텍스트에서는, 파일의 ctime을 파일의 작성 시각이라고 부릅니다.이는 잘못되었다.대부분의 Unix 파일시스템에서는 Unix 파일을 작성할 시간이 없습니다.

다음은 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개의 파라미터를 사용합니다.이것은 상대적인 파라미터 또는 절대 파라미터입니다.

Linux 상에서 실행 중인 경우 마지막으로 수정된 날짜만 저장되므로 정보에 액세스할 수 없습니다.

파일 시스템에 따라 약간 다릅니다.ext2와 ext3은 작성 시간을 지원하지 않지만 ext4는 지원하는 것으로 알고 있습니다.

이 주제가 아주 오래됐다는 건 알지만, 만약 누군가 답을 찾고 있다면, 나로서 내 해결책을 게시할 거야.

이 솔루션은 파일 선두에 추가 데이터가 있는 것을 꺼려하지 않는 경우에 유효합니다.

기본적으로 파일이 존재하지 않는 경우 파일을 생성하고 첫 번째 줄에 현재 날짜를 추가하는 것이 좋습니다.다음으로 첫 번째 줄을 읽을 수 있습니다.fgets(fopen($file, 'r')), 로 변환합니다.DateTime오브젝트나 다른 것(이상한 포맷으로 저장하지 않는 한 생으로 사용할 수 있음)과 voila - 작성 날짜가 있습니다!예를 들어 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);
    }
}

언급URL : https://stackoverflow.com/questions/4401320/php-how-can-i-get-file-creation-date

반응형