2012-01-26 3 views
3

Можно записать время отклика каждого процесса с помощью curl_multi? Вот код, который я использую в настоящее время. Я просто не уверен, как записывать время ответа каждого процесса. Спасибо за любую помощь!Индивидуальное время отклика с использованием PHP curl_multi

do 
{ 
    $execReturnValue = curl_multi_exec($mh, $runningHandles); 
} while ($execReturnValue == CURLM_CALL_MULTI_PERFORM); 

// Loop and continue processing the request 
while ($runningHandles && $execReturnValue == CURLM_OK) 
{ 
    // Wait forever for network 
    $numberReady = curl_multi_select($mh); 
    if ($numberReady != -1) 
    { 
     // Pull in any new data, or at least handle timeouts 
     do  
     { 
      $execReturnValue = curl_multi_exec($mh, $runningHandles); 
     } while ($execReturnValue == CURLM_CALL_MULTI_PERFORM); 
    } 
}  
//End Run 
//Get Data and Close 
foreach($ping as $cid=>$p) 
{ 
    $curlError = curl_error($c[$cid]); 
    if($curlError == "") 
    { 
     $curl_data[$cid] = curl_multi_getcontent($c[$cid]); 
    } 
    else 
    { 
     //email me! 
    }   
curl_multi_remove_handle($mh,$c[$cid]); 
curl_close($c[$cid]); 
} 
curl_multi_close($mh); 
+0

[ 'curl_getinfo' или' curl_multi_info_read', если вам нужно знать длительность отдельных запросов] [1] [1]:. http://stackoverflow.com/a/4313332/89771 –

ответ

1

Используйте микропоры(), чтобы получить время в начале вашего forloop, а затем использовать микропоры() в конце, чтобы получить время в конце коды и вычесть время, в конце концов от времени в начале получить разницу. Вот как долго ваш код запускался.

EDIT:

curl_setopt($ch, CURLOPT_WRITEFUNCTION, ‘read_body’);//sets callback 

http://www.php.net/manual/en/function.curl-setopt.php

curl_multi запускает процессы параллельно. Поэтому мое предыдущее предложение не сработало. Решение: добавьте обратный вызов! возьмите время микросов, когда все эти процессы запустится, и в обратном вызове запишите идентификатор процесса и время его проверки. К сожалению, все эти процессы будут бороться за контроль над этим обратным вызовом. Я считаю, что это решение использует fork() для создания новых процессов. Это становится в довольно много работы, чтобы получить индикатор назад, но если вы заинтересованы здесь ссылка на PHP вилке(): http://php.net/manual/en/function.pcntl-fork.php

+0

Я думаю, что даст мне все время сценарий потребовалось, чтобы запустить , Я больше смотрю, как долго каждая ручка берет на себя. Если это возможно. –

+0

OK Да, я сделал еще несколько исследований, и можно установить обратный вызов для ручек curl. Я добавил редактирование. – jakx

Смежные вопросы