【发布时间】:2018-05-30 09:29:01
【问题描述】:
我正在使用 PHP 和 cURL 开发一个 leecher 网站。
这是基本代码:
$ch = curl_init();
$url = "http://somesite.com/somefile.part1.rar";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$file_name = basename($url);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents($file_name, $output);
当文件大小较小(例如 15MB 左右)时,此代码有效并且文件被窃取到我的服务器,但当文件大小很大(例如 1GB 左右)时,则没有任何工作。
我已尝试将 10000M 文件大小限制设置为: post_max_size 上传最大文件大小 max_file_uploads 但这没有用。
我尝试将内存限制提高到 512M 甚至 -1,但这并没有奏效。
那么如何使用 cURL 获取大文件?
【问题讨论】:
-
512MB ram,您必须至少有 1GB ram 才能将文件内容存储在 php 变量中然后保存,您也许应该使用 CURLOPT_FILE 并直接写入文件。脚本也可能在 60 秒后超时。
-
Guzzle它
$client->request('GET', 'http://...', ['sink' => '/path/to/file']);