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.