我正在尝试使用Guzzle 6异步下载文件,但文档似乎含糊不清,无法找到任何有用的示例。
我不确定的是 - 我该如何保存收到的数据?
目前我这样做:
$successHandler = function (Response $response, $index) use ($files) {
$file = fopen($files[$index], 'a');
$handle = $response->getBody();
while (!$handle->eof()) {
fwrite($file, $handle->read(2048));
}
fclose($file);
};
这真的是异步吗?
因为如果我们进入一个回调并开始循环,我们怎样才能同时从其他回复中获取数据呢?
是否有更直接的方式告诉,在创建请求时,应该在何处存储响应? (或者直接传递一个流)。
答案 0 :(得分:12)
sink
选项应该是您的朋友:
$client->request('GET', '/stream/20', [
'sink' => '/path/to/file',
]);
供参考,请参阅http://docs.guzzlephp.org/en/latest/request-options.html#sink。
答案 1 :(得分:3)
id="defaultOpen"