FTP-Download zur Ausgabe streamen

Ich versuche, eine Datei über HTTP von FTP an den Browser des Benutzers zu streamen / weiterzuleiten. Das heißt, ich versuche, den Inhalt einer Datei auf einem FTP-Server zu drucken.

Das habe ich bisher:

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 sieht aus wie das:

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

Mit diesem Ansatz kann ich nur kleine Dateien an den Browser des Benutzers senden. Bei größeren Dateien wird nichts gedruckt und ich erhalte einen schwerwiegenden Fehler (lesbar aus Apache-Protokollen):

Schwerwiegender PHP-Fehler: Die zulässige Speichergröße von 16777216 Byte ist erschöpft (es wurde versucht, 15994881 Byte zuzuweisen) in /xxx/ftpconnection.php in Zeile 200

Ich habe versucht zu ersetzenphp://output mitphp://stdout ohne Erfolg (nichts scheint an den Browser gesendet zu werden).

Wie kann ich effizient von FTP herunterladen und gleichzeitig diese Daten an den Browser senden?

Hinweis: Ich möchte nicht verwendenfile_get_contents('ftp://user:pass@host:port/path/to/file'); oder ähnliches.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage