Потоковая загрузка с 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');
или похожие.