使用Curl 下載大檔案而不造成記憶體過載
使用cURL 下載大型遠端檔案時,將整個檔案讀入記憶體的預設行為可能會出現問題,尤其是對於大量數據。為了應對這項挑戰,請考慮以下最佳化方法:
我們可以使用以下修改後的程式碼將下載的檔案直接串流到磁碟,而不是將下載的檔案讀入記憶體:
<?php set_time_limit(0); // Specify the destination file to save the download $fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+'); // Replace spaces in the URL with %20 for proper handling $ch = curl_init(str_replace(" ", "%20", $url)); // Set a high timeout value to prevent interruptions while downloading large files curl_setopt($ch, CURLOPT_TIMEOUT, 600); // Stream curl response to disk curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Execute the download and close all resources curl_exec($ch); curl_close($ch); fclose($fp); ?>
此程式碼snippet 初始化cURL,設定適當的逾時,並將其配置為將回應直接寫入指定文件,而不是將其載入到記憶體中。透過將下載串流傳輸到磁碟,您可以在處理大檔案時顯著減少記憶體使用量。
以上是如何使用curl下載大檔案而不造成記憶體過載?的詳細內容。更多資訊請關注PHP中文網其他相關文章!