feof 함수
(PHP 4, PHP 5, PHP 7, PHP 8)
feof — 파일 포인터에서 파일 끝 테스트
설명
feof(resource $stream
): bool
파일 포인터에서 파일 끝을 테스트합니다.
매개변수
stream
- 파일 포인터는 유효해야 하며 fopen() 또는 fsockopen()에 의해 성공적으로 열린 파일을 가리켜야 합니다(아직 fclose()에 의해 닫히지 않음).
반환 값
파일 포인터가 EOF에 있거나 오류가 발생하면(소켓 시간 초과 포함) true
를 반환합니다. 그렇지 않으면 false
를 반환합니다.
메모
경고 fsockopen()에 의해 열린 연결이 서버에 의해 닫히지 않은 경우 feof()가 중단됩니다. 이 문제를 해결하려면 아래 예를 참조하세요.
예제 #1 feof()로 시간 초과 처리
<?php
function safe_feof($fp, &$start = NULL) {
$start = microtime(true);
return feof($fp);
}
/* Assuming $fp is previously opened by fsockopen() */
$start = NULL;
$timeout = ini_get('default_socket_timeout');
while(!safe_feof($fp, $start) && (microtime(true) - $start) < $timeout)
{
/* Handle */
}
?>
경고 전달된 파일 포인터가 유효하지 않으면 feof()가 true
를 반환하지 못하기 때문에 무한 루프가 발생할 수 있습니다.
예제 #2 잘못된 파일 포인터가 있는 feof() 예제
<?php
// if file can not be read or doesn't exist fopen function returns FALSE
$file = @fopen("no_such_file", "r");
// FALSE from fopen will issue warning and result in infinite loop here
while (!feof($file)) {
}
fclose($file);
?>