PHP의 feof() 함수는 파일 포인터가 파일의 끝(EOF, End-Of-File)에 도달했는지 검사하는 함수입니다. 파일을 한 줄씩 읽거나 반복문으로 데이터를 처리할 때 루프 종료 조건으로 널리 사용됩니다.
feof() 함수란?
feof() 함수는 파일 포인터가 EOF에 도달했거나 오류(소켓 타임아웃 포함)가 발생한 경우 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.
문법
feof(file_pointer)
매개변수
file_pointer − 유효한 파일 포인터여야 하며, fopen() 또는 fsockopen()으로 성공적으로 연 파일을 가리켜야 합니다. fclose()로 이미 닫힌 파일 포인터는 사용할 수 없습니다.
반환값
파일 포인터가 EOF에 도달했거나 오류가 발생하면 TRUE를 반환하며, 그 외의 경우에는 FALSE를 반환합니다.
사용 예제
다음 예제는 while 반복문과 함께 feof()를 사용하여 파일 내용을 한 줄씩 읽어오는 방법을 보여줍니다.
<?php
$file_pointer = @fopen("/myfiles/one.php", "r");
if ($file_pointer) {
while (!feof($file_pointer)) {
$buffer = fgetss($file_pointer, 1024);
echo $buffer;
}
fclose($file_pointer);
}
?>코드 설명
@fopen()으로 파일을 읽기 모드("r")로 열고, 파일 열기에 성공한 경우 while 반복문에서 !feof() 조건을 사용해 파일 끝에 도달하기 전까지 fgetss()로 1024바이트씩 내용을 읽어 출력합니다. 모든 내용을 읽은 후에는 fclose()로 파일을 닫아 리소스를 해제합니다.
출력 결과
First line
참고 사항
feof()를 사용할 때는 주의할 점이 있습니다. 잘못된 파일 포인터를 전달하면 무한 루프가 발생할 수 있으므로, 반드시 fopen() 등으로 정상적으로 열린 유효한 포인터인지 확인한 후 사용하는 것이 좋습니다. 또한 소켓 타임아웃과 같은 오류 상황에서도 TRUE를 반환하므로, 단순히 파일의 끝뿐 아니라 오류 여부도 함께 고려해야 합니다.