使用CURL 串流大檔案下載
下載大型遠端檔案可能是一項挑戰,特別是當檔案無法容納在可用記憶體內時伺服器。使用 CURL 時,這可能是一個常見問題,預設情況下,CURL 在將檔案資料寫入磁碟之前將其儲存在記憶體中。
幸運的是,有一個解決方案可讓您將檔案直接串流到磁碟。為此,請對程式碼進行以下調整:
<?php set_time_limit(0); // Open a file pointer for writing $fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+'); // Set up CURL options $ch = curl_init(str_replace(" ", "%20", $url)); // Set timeout to a high enough value curl_setopt($ch, CURLOPT_TIMEOUT, 600); // Write CURL response to the file pointer curl_setopt($ch, CURLOPT_FILE, $fp); // Enable following of location headers curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Execute CURL curl_exec($ch); // Close CURL and the file pointer curl_close($ch); fclose($fp);
透過將CURLOPT_FILE 設定為文件指針,您將指示CURL 將下載的資料直接寫入磁碟上的文件,而不是將其儲存在內存中。這確保了即使是非常大的檔案也可以順利下載而不受記憶體限制。
以上是如何使用 cURL 串流傳輸大檔案下載以避免記憶體問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!