मैं एफ़टीपी से HTTP के माध्यम से उपयोगकर्ता के ब्राउज़र में फ़ाइल को स्ट्रीम/पाइप करने की कोशिश कर रहा हूं। यही है, मैं एक 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
}
इस दृष्टिकोण के साथ
, मैं केवल उपयोगकर्ता के ब्राउज़र के लिए छोटे फ़ाइलें भेजने के लिए कर रहा हूँ। बड़ी फ़ाइलों के लिए, कुछ भी नहीं मुद्रित हो जाता है और मैं एक गंभीर त्रुटि (अपाचे लॉग से पठनीय) मिलती है:
PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 15994881 bytes) in /xxx/ftpconnection.php on line 200
मैं सफलता के बिना php://stdout
साथ php://output
की जगह की कोशिश की (कुछ भी नहीं ब्राउज़र के लिए भेजा जा रहा है)।
ब्राउज़र में उस डेटा को एक ही समय में भेजने के दौरान मैं कुशलता से एफ़टीपी से कैसे डाउनलोड कर सकता हूं?
नोट: मैं file_get_contents('ftp://user:[email protected]:port/path/to/file');
या इसी तरह का उपयोग नहीं करना चाहूंगा।
मुझे भी इस उत्तर में वास्तव में दिलचस्पी होगी! – knittl