@cryp24

Как высчитать время выполнения каждого запроса в multi culr?

Собственно есть multi culr
$proxys = array(
        '118.172.201.105:57900',
        '91.208.39.70:8080',
        '185.37.211.222:50330',
        '45.55.9.218:3128'
    );
    $multi = curl_multi_init();
    $channels = array();
    $starttime=microtime(true);
    foreach ($proxys as $proxy) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://test.net/zaprostest');
        curl_setopt($ch, CURLOPT_PROXY,"http://".$proxy."/");
        curl_setopt($ch, CURLOPT_TIMEOUT, 15);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_multi_add_handle($multi, $ch);
        $channels[$proxy] = $ch;
    }
    $active = null;
    do {
        $mrc = curl_multi_exec($multi, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    while ($active && $mrc == CURLM_OK) {
        if (curl_multi_select($multi) == -1) {
            continue;
        }

        do {
            $mrc = curl_multi_exec($multi, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
    foreach ($channels as $channel) {
        dump( curl_multi_getcontent($channel));
        curl_multi_remove_handle($multi, $channel);
    }
    curl_multi_close($multi);

Также есть переменная $starttime которая хранит время в милисекундах старта мультикурла. В обычном курле я бы использовал новую переменную с текущим временем в конце курла и высчитал разницу.
Как решить эту задачу в мультикурле?

p.s. погуглив видел что много пишут про CURLOPT_PROGRESSFUNCTION, но не могу уловить логику куда ее прописать и куда вставить возврат внутренней функции.
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
CURLINFO_TOTAL_TIME из curl_getinfo.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы