Php curl получить количество записанных байтов - PullRequest
1 голос
/ 24 сентября 2019

Как я могу узнать, сколько данных записано в php curl.Вот мой код, который загружает, т.е. записывает данные на мой локальный сервер с удаленного URL.Но я хочу знать, сколько данных было написано до сих пор.

    <?php
    $url  = 'https://speed.hetzner.de/1GB.bin';
    $path = $_SERVER['DOCUMENT_ROOT'] . '/1gb.bin';

    $fp = fopen($path, 'w');

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_FILE, $fp);

    $data = curl_exec($ch);

    curl_close($ch);
    fclose($fp);

1 Ответ

1 голос
/ 24 сентября 2019

Я использую это для загруженного размера в байтах (включая размер файла, поскольку он является телом ответа) (после вызова curl_exec($ch);)

 // $ch is the curl handle
 $info = curl_getinfo($ch);
 echo $info['size_download'];

CURLINFO_SIZE_DOWNLOAD - Общее количество загруженных байтов

Это цитата из libcurl документация

Сумма равнатолько для последней передачи и будет сбрасываться снова для каждой новой передачи.Это подсчитывает фактические данные полезной нагрузки, которые также обычно называют телом.Все мета-данные и данные заголовка исключены и не будут учитываться в этом числе.

И это для размера запроса, который вы сделали с curl в байтах

 $info = curl_getinfo($ch);
 echo $info['request_size'];

CURLINFO_REQUEST_SIZE - общий размер выданных запросов, в настоящее время только для HTTP-запросов

. Вы также можете использовать функцию с параметром opt, установленным в одну из констант функции, например

echo curl_getinfo($ch, CURLINFO_REQUEST_SIZE);
echo curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD);

Функция getinfo ()

Как вы сказали в комментариях Дхармана, не выключайте CURLOPT_SSL_VERIFYPEER.Если вы хотите использовать https запросы, отметьте это php-curl-https

...