PHP의 readfile() 함수란?
readfile()은 PHP에 내장된 함수로, 파일의 내용을 출력 버퍼(output buffer)로 직접 읽어들이는 역할을 합니다. 별도의 echo나 print 없이도 파일 내용이 곧바로 브라우저에 출력되는 것이 특징입니다.
함수에는 읽고자 하는 파일 이름이 매개변수로 전달되며, 파일 읽기에 성공하면 읽어들인 바이트 수를 반환합니다. 반대로 실패할 경우 FALSE를 반환합니다.
readfile() 예제 코드
<?php
// readfile() 함수를 사용해 파일 내용을
// 출력 버퍼에 직접 작성
$myfile = @readfile("gfg.txt");
if (!$myfile) {
print "죄송합니다. 파일을 열 수 없습니다.";
}
?>
실행 결과
파일이 존재하지 않거나 열 수 없는 경우 아래와 같은 결과가 출력됩니다.
죄송합니다. 파일을 열 수 없습니다.
PHP의 file_get_contents() 함수란?
file_get_contents() 역시 PHP에 내장된 함수로, 파일 전체를 메모리에 로드한 후 echo 함수가 호출되는 시점에만 내용을 화면에 표시합니다. 이 과정에서 데이터는 메모리에서 출력 버퍼로 복사된 뒤 출력됩니다.
특히 이 함수는 메모리 매핑(memory mapping) 기술을 활용하기 때문에 대용량 파일이라도 빠르고 효율적으로 읽을 수 있다는 장점이 있습니다.
읽어야 할 파일 경로가 매개변수로 전달되며, 성공 시 파일에서 읽어들인 데이터 자체를 문자열로 반환하고, 실패하면 FALSE를 반환합니다.
file_get_contents() 예제 코드
<?php
// gfg.txt 파일의 0번째 문자부터
// 36바이트만큼 읽어오기
$text = file_get_contents('text_file_name.txt', FALSE, NULL, 0, 36);
echo $text;
?>
두 함수의 핵심 차이점 정리
- readfile(): 파일 내용을 곧바로 출력 버퍼에 직접 쓰며, 변수에 저장하지 않고 즉시 출력할 때 적합합니다. 다운로드 처리 등에 유용합니다.
- file_get_contents(): 파일 내용을 메모리에 담아 문자열로 반환하기 때문에, 내용을 가공·편집한 후 출력하거나 다른 로직에 활용할 때 적합합니다.
즉, 단순히 파일을 화면에 바로 보여주고 싶다면 readfile(), 내용을 변수에 담아 조작해야 한다면 file_get_contents()를 선택하는 것이 좋습니다.