使用Curl 下載大檔案:讀入記憶體的一種替代方法
問題:如何克服使用Curl 下載大檔案時的記憶體限制curl,它通常會讀入記憶體?
當檔案大小超過伺服器上的可用記憶體時,會出現此問題。更有效的方法是將檔案直接串流到磁碟,完全繞過記憶體。
答案:
<?php set_time_limit(0); // Set the path to the target file $fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+'); // Exchange spaces with %20 to ensure compatibility with URLs $ch = curl_init(str_replace(" ", "%20", $url)); // Extend the timeout value to accommodate large files curl_setopt($ch, CURLOPT_TIMEOUT, 600); // Directs curl to write response to file curl_setopt($ch, CURLOPT_FILE, $fp); // Automatically follows redirects curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Send request and receive response curl_exec($ch); curl_close($ch); fclose($fp); ?>
在此程式碼中,以下修改是關鍵:
以上是如何使用curl下載大檔案而不超出記憶體限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!