Потоковая загрузка с FTP на выход

Я пытаюсь передать / передать файл в браузер пользователя через HTTP с FTP. То есть я пытаюсь распечатать содержимое файла на FTP-сервере.

Это то, что я до сих пор:

public function echo_contents() {                    
    $file = fopen('php://output', 'w+');             

    if(!$file) {                                     
        throw new Exception('Unable to open output');
    }                                                

    try {                                            
        $this->ftp->get($this->path, $file);         
    } catch(Exception $e) {                          
        fclose($file);  // wtb finally               

        throw $e;                                    
    }                                                

    fclose($file);                                   
}                                                    

$this->ftp->get выглядит так:

public function get($path, $stream) {
    ftp_fget($this->ftp, $stream, $path, FTP_BINARY);  // Line 200
}

При таком подходе я могу отправлять только небольшие файлы в браузер пользователя. Для больших файлов ничего не печатается, и я получаю фатальную ошибку (читаемую из журналов Apache):

Неустранимая ошибка PHP: допустимый объем памяти 16777216 байт исчерпан (попытка выделить 15994881 байт) в /xxx/ftpconnection.php в строке 200

Я пытался заменитьphp://output с участиемphp://stdout без успеха (кажется, ничего не отправлено в браузер).

Как я могу эффективно загрузить с FTP, одновременно отправляя эти данные в браузер?

Примечание: я не хотел бы использоватьfile_get_contents('ftp://user:pass@host:port/path/to/file'); или похожие.

Ответы на вопрос(6)

Ваш ответ на вопрос