swoole_http_client->download

通过Http下载文件。downloadget方法的不同是download收到数据后会写入到磁盘,而不是在内存中对Http Body进行拼接。因此download仅使用小量内存,就可以完成超大文件的下载。 函数原型:

function swoole_http_client->download(string $path, string $filename, callable $callback, 
	int $offset = 0);

使用示例

$cli = new swoole_http_client('127.0.0.1', 80);

$cli->setHeaders([
    'Host' => "localhost",
    "User-Agent" => 'Chrome/49.0.2587.3',
    'Accept' => '*',
    'Accept-Encoding' => 'gzip',
]);

$cli->download('/video.avi', __DIR__.'/video.avi', function ($cli) {
	var_dump($cli->downloadFile);
});

断点续传

$cli = new swoole_http_client('127.0.0.1', 80);
$file = __DIR__.'/video.avi';
$offset = filesize($file);
$cli->setHeaders([
    'Host' => "localhost",
    "User-Agent" => 'Chrome/49.0.2587.3',
    'Accept' => '*',
    'Accept-Encoding' => 'gzip',
	'Range' => "bytes=$offset-",
]);

$cli->download('/video.avi', $file, function ($cli) {
	var_dump($cli->downloadFile);
}, $offset);