使用 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中文网其他相关文章!