Transmitir la descarga de FTP a la salida

Estoy tratando de transmitir / canalizar un archivo al navegador del usuario a través de HTTP desde FTP. Es decir, estoy tratando de imprimir el contenido de un archivo en un servidor FTP.

Esto es lo que tengo hasta ahora:

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 Se ve como esto:

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

Con este enfoque, solo puedo enviar archivos pequeños al navegador del usuario. Para archivos más grandes, no se imprime nada y recibo un error fatal (legible de los registros de Apache):

Error fatal de PHP: tamaño de memoria permitido de 16777216 bytes agotado (se intentó asignar 15994881 bytes) en /xxx/ftpconnection.php en la línea 200

Traté de reemplazarphp://output conphp://stdout sin éxito (nada parece ser enviado al navegador).

¿Cómo puedo descargar de manera eficiente desde FTP mientras envío esos datos al navegador al mismo tiempo?

Nota: no me gustaría usarfile_get_contents('ftp://user:pass@host:port/path/to/file'); o similar.

Respuestas a la pregunta(6)

Su respuesta a la pregunta