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 작업을 수행하므로, 너무 자주 사용하거나 대용량 파일에 대해 반복적으로 호출하는 것은 성능에 영향을 미칠 수 있습니다. 필요한 정보를 한 번에 가져와서 변수에 저장하여 재사용하는 것이 성능 향상에 도움이 됩니다.