GuzzleHttp Parallel Progress для Async Client в Azure и Flysystem - PullRequest
0 голосов
/ 23 декабря 2019

Я хотел бы получить фактический прогресс блока, а не прогресс всех переводов. В настоящее время я не знаю, как определить blockId каждого отдельного перевода. Информация о обратном вызове процесса, который я сейчас извлекаю, не имеет смысла.

Вот функция прогресса, содержащаяся в ServiceRestProxy.php

Исходная функция https://github.com/Azure/azure-storage-php/blob/master/azure-storage-common/src/Common/Internal/ServiceRestProxy.php#L99

/**
 * Create a Guzzle client for future usage.
 *
 * @param  array $options Optional parameters for the client.
 *
 * @return Client
 */
private static function createClient(array $options)
{
    $verify = true;
    //Disable SSL if proxy has been set, and set the proxy in the client.
    $proxy = getenv('HTTP_PROXY');
    // For testing with Fiddler
    // $proxy = 'localhost:8888';
    // $verify = false;
    if (!empty($proxy)) {
        $options['proxy'] = $proxy;
    }

    if (!empty($options['verify'])) {
        $verify = $options['verify'];
    }

    $downloadTotal = 0;

    return (new \GuzzleHttp\Client(
        array_merge(
            $options,
            array(
                "defaults" => array(
                    "allow_redirects" => true,
                    "exceptions" => true,
                    "decode_content" => true,
                ),
                'cookies' => true,
                'verify' => $verify,
                'progress' => function (
                    $downloadTotal,
                    $downloadedBytes,
                    $uploadTotal,
                    $uploadedBytes
                ){
                    // i need to detect which block the progress is for.
                    echo ("progress: download: {$downloadedBytes}/{$downloadTotal}, upload: {$uploadedBytes}/{$uploadTotal}");
                }
            )
        )
    ));
}
...