[php]fpassthru

PHP의 fpassthru 함수

fpassthru 함수는 파일 포인터의 현재 위치부터 파일의 끝까지의 모든 내용을 출력하는데 사용됩니다. 이 함수는 파일을 출력하는데 유용하며, 주로 파일 다운로드 기능을 구현하는데 활용됩니다.

fpassthru 함수의 사용 예시:

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

if ($fileHandle) {
    fpassthru($fileHandle); // 파일 내용을 출력
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}

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

  1. header 함수와 함께 사용하기 (파일 다운로드):
$filename = 'example.pdf';
$fileHandle = fopen($filename, 'r');

if ($fileHandle) {
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
    fpassthru($fileHandle); // 파일 내용을 출력하여 다운로드
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}
  1. filesize 함수와 함께 사용하기 (파일 크기 계산):
$filename = 'example.txt';
$fileHandle = fopen($filename, 'r');

if ($fileHandle) {
    $filesize = filesize($filename);
    echo "File size: $filesize bytes" . PHP_EOL;

    fpassthru($fileHandle); // 파일 내용을 출력
    fclose($fileHandle);
} else {
    echo "Failed to open the file.";
}

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

$filenames = ['file1.txt', 'file2.txt', 'file3.txt'];

foreach ($filenames as $filename) {
    $fileHandle = fopen($filename, 'r');

    if ($fileHandle) {
        echo "Contents of $filename:" . PHP_EOL;
        fpassthru($fileHandle); // 파일 내용을 출력
        echo PHP_EOL;
        fclose($fileHandle);
    } else {
        echo "Failed to open the file: $filename" . PHP_EOL;
    }
}

성능 향상을 위한 팁:

  1. fpassthru 함수는 파일의 내용을 출력하는데 사용되므로, 파일이 큰 경우 메모리 부족 문제가 발생할 수 있습니다. 가능하면 큰 파일을 한 번에 출력하는 것이 아닌, 조금씩 읽어서 출력하는 방식으로 처리하거나, 압축된 형식으로 전송하여 성능을 향상시킬 수 있습니다.

  2. 파일을 출력할 때, 불필요한 데이터를 포함하지 않도록 적절하게 처리하는 것이 성능에 도움이 됩니다.


게시됨

카테고리

,

작성자