我使用一个功能通过私有API下载文件。 下载小/中文件的一切都很顺利,但大文件是不可能的,因为它占用了太多的内存。
这是我的功能:
jar cfe myJar.jar myClass diver.class map.class reduce.class
如何优化此功能以将文件下载到磁盘而不是内存?
由于
答案 0 :(得分:1)
使用CURLOPT_FILE。它会询问保存下载的文件指针。
代码就像
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$fp = fopen("your_file", 'w+');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec ($ch);
答案 1 :(得分:0)
您可以使用CURLOPT_FILE
,如下所示:
protected function executeFile($method, $url, $params=array(), $as_user=null) {
$data_string = json_encode($params);
$method = strtoupper($method);
$fp = fopen ('savefilepath', 'w+');
$ch = curl_init();
if($method == 'GET') {
$url = $this->options['api_url'].$url.'?';
$url .= $this->format_query($params);
curl_setopt($ch, CURLOPT_URL, $url);
} else {
curl_setopt($ch, CURLOPT_URL, $this->options['api_url'].$url);
}
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILE, $fp);
....
curl_exec($ch);
fclose($fp);
.....
return $return;
}