Guzzle 6下载进度

Lao*_*neo 7 php guzzle guzzle6

我想用Guzzle下载一个大文件,并希望跟踪进度.我不知道是否必须以某种方式传递流或使用RequestMediator.

我正在测试以下代码.

    $dl = 'http://archive.ubuntu.com/ubuntu/dists/wily/main/installer-amd64/current/images/netboot/mini.iso';
    $client = new Client([]);

    $request = new GuzzleHttp\Psr7\Request('get', $dl);
    $promise = $this->client->sendAsync($request, [
            'sink' => '/tmp/test.bin'
    ]);
    $promise->then(function  (Response $resp) use ( $fs) {
        echo 'Finished';
    }, function  (RequestException $e) {
    });
    $promise->wait();
Run Code Online (Sandbox Code Playgroud)

一个提示将不胜感激.

Sha*_*ley 16

虽然,文档中未提及,但您可以使用"进度"请求选项.

可在此处找到对它的引用.

$options = [
    'progress' => function ($dl_total_size, $dl_size_so_far, $ul_total_size, $ul_size_so_far) {
        // do something.
    }
];
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,这始终返回 0。 (3认同)