Guzzle 6 Download-Fortschritt

Lesezeit: 1 Minute

Ich möchte mit Guzzle eine große Datei herunterladen und den Fortschritt verfolgen. Ich weiß nicht, ob ich einen Stream übergeben muss oder den RequestMediator irgendwie verwende.

  • Ich habe versucht, das Ereignis curl.callback.progress zu abonnieren, aber die PSR 7-Anforderung hat keinen Ereignis-Dispatcher.
  • Ich habe das versucht on_stats, aber der Rückruf wird erst am Ende gefeuert.
  • Das Fortschritts-Abonnenten-Plugin ist veraltet https://github.com/guzzle/progress-subscriber

Ich teste folgenden Code.

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

    $request = new GuzzleHttpPsr7Request('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();

Ein Hinweis wäre wünschenswert.

Obwohl dies in der Dokumentation nicht erwähnt wird, können Sie die Anfrageoption “Fortschritt” verwenden.

Verweise darauf sind zu finden Hier.

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

  • In meinem Fall gibt dies die ganze Zeit 0 zurück.

    – Mechanik

    30. Mai ’18 um 9:09

.

389550cookie-checkGuzzle 6 Download-Fortschritt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy