[php]fstat

PHP의 fstat 함수

fstat 함수는 파일에 대한 상태 정보를 반환하는 함수로, 파일의 메타데이터를 가져올 수 있습니다. 이 함수를 사용하여 파일의 크기, 소유자, 생성 시간 등의 정보를 얻을 수 있습니다.

fstat 함수의 사용 예시:

$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');

if ($fileHandle) {
    // 파일의 상태 정보를 얻어옴
    $fileInfo = fstat($fileHandle);
    
    echo "File Size: " . $fileInfo['size'] . " bytes" . PHP_EOL;
    echo "Owner UID: " . $fileInfo['uid'] . PHP_EOL;
    echo "Group GID: " . $fileInfo['gid'] . PHP_EOL;
    echo "File Permissions: " . decoct($fileInfo['mode'] & 0777) . PHP_EOL;
    echo "File Inode Number: " . $fileInfo['ino'] . PHP_EOL;
    
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}

위 예시는 파일 ‘data.txt’를 읽기 모드로 열고, fstat 함수를 사용하여 파일의 크기, 소유자 UID, 그룹 GID, 파일 권한, 파일의 Inode 번호를 출력합니다.

다른 함수와 함께 사용하는 예시:

fstat 함수로 가져온 파일 메타데이터를 다른 함수와 함께 사용할 수 있습니다. 예를 들어, 파일의 수정 시간을 date 함수를 사용하여 사람이 읽기 쉬운 형식으로 변환할 수 있습니다.

$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');

if ($fileHandle) {
    // 파일의 상태 정보를 얻어옴
    $fileInfo = fstat($fileHandle);
    
    // 파일의 수정 시간을 사람이 읽기 쉬운 형식으로 변환
    $modifiedTime = date('Y-m-d H:i:s', $fileInfo['mtime']);
    
    echo "File Size: " . $fileInfo['size'] . " bytes" . PHP_EOL;
    echo "Last Modified: " . $modifiedTime . PHP_EOL;
    
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}

조건문과 반복문과 함께 사용하는 예시:

$filename = 'data.txt';
$fileHandle = fopen($filename, 'r');

if ($fileHandle) {
    while (($line = fgets($fileHandle)) !== false) {
        // 파일의 상태 정보를 얻어옴
        $fileInfo = fstat($fileHandle);
        
        // 파일의 크기가 1000 바이트를 초과할 경우 반복문 종료
        if ($fileInfo['size'] > 1000) {
            break;
        }
        
        echo "Line: " . $line;
    }
    
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}

위 예시는 파일 ‘data.txt’를 열고, 파일의 크기가 1000 바이트를 초과하지 않을 때까지 파일의 각 줄을 출력합니다.

성능 향상을 위한 팁:

fstat 함수는 파일의 메타데이터를 얻기 위해 파일에 대한 시스템 호출을 수행합니다. 이러한 시스템 호출은 I/O 작업을 수행하므로, 너무 자주 사용하거나 대용량 파일에 대해 반복적으로 호출하는 것은 성능에 영향을 미칠 수 있습니다. 필요한 정보를 한 번에 가져와서 변수에 저장하여 재사용하는 것이 성능 향상에 도움이 됩니다.


게시됨

카테고리

,

작성자