使用 Curl 處理大檔案下載:串流傳輸到磁碟
由於記憶體限制,使用curl 下載大檔案可能具有挑戰性。傳統方法在將整個文件寫入磁碟之前將其讀取到記憶體中,可能會導致效能問題。要克服此限制,請考慮將檔案直接串流傳輸到磁碟。
這是一個使用curl_setopt()函數來設定CURLOPT_FILE選項的解決方案。這個選項指定一個檔案指針,curl 可以在其中直接寫入下載的資料:
set_time_limit(0); // Disable PHP time limit // Open a file for writing $fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+'); // Initialize curl $ch = curl_init(str_replace(" ", "%20", $url)); // Set timeout to a high value curl_setopt($ch, CURLOPT_TIMEOUT, 600); // Write curl response to file curl_setopt($ch, CURLOPT_FILE, $fp); // Follow any redirects curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Execute curl curl_exec($ch); // Close curl and file handlers curl_close($ch); fclose($fp);
在這個改進的程式碼中:
透過使用此技術,curl可以將下載的資料直接串流到磁碟,繞過記憶體限制並能夠有效處理大檔案。
以上是Curl 如何將大檔案下載直接串流到磁碟以避免記憶體問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!