Add saving time duration for curl HTTP requests
parent
2406a094d3
commit
370e082b4a
|
@ -20,6 +20,7 @@ class TransportException extends \RuntimeException
|
|||
protected $headers;
|
||||
protected $response;
|
||||
protected $statusCode;
|
||||
protected $totalResponseTime;
|
||||
|
||||
public function setHeaders($headers)
|
||||
{
|
||||
|
@ -50,4 +51,14 @@ class TransportException extends \RuntimeException
|
|||
{
|
||||
return $this->statusCode;
|
||||
}
|
||||
|
||||
public function getTotalResponseTime()
|
||||
{
|
||||
return $this->totalResponseTime;
|
||||
}
|
||||
|
||||
public function setTotalResponseTime($totalResponseTime)
|
||||
{
|
||||
$this->totalResponseTime = $totalResponseTime;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -303,7 +303,10 @@ class CurlDownloader
|
|||
if (!$error && function_exists('curl_strerror')) {
|
||||
$error = curl_strerror($errno);
|
||||
}
|
||||
throw new TransportException('curl error '.$errno.' while downloading '.Url::sanitize($progress['url']).': '.$error);
|
||||
|
||||
$exception = new TransportException('curl error '.$errno.' while downloading '.Url::sanitize($progress['url']).': '.$error);
|
||||
$exception->setTotalResponseTime($progress['total_time_us']);
|
||||
throw $exception;
|
||||
}
|
||||
$statusCode = $progress['http_code'];
|
||||
rewind($job['headerHandle']);
|
||||
|
@ -322,11 +325,13 @@ class CurlDownloader
|
|||
$contents = stream_get_contents($job['bodyHandle']);
|
||||
}
|
||||
$response = new Response(array('url' => $progress['url']), $statusCode, $headers, $contents);
|
||||
$response->setTotalResponseTime($progress['total_time_us']);
|
||||
$this->io->writeError('['.$statusCode.'] '.Url::sanitize($progress['url']), true, IOInterface::DEBUG);
|
||||
} else {
|
||||
rewind($job['bodyHandle']);
|
||||
$contents = stream_get_contents($job['bodyHandle']);
|
||||
$response = new Response(array('url' => $progress['url']), $statusCode, $headers, $contents);
|
||||
$response->setTotalResponseTime($progress['total_time_us']);
|
||||
$this->io->writeError('['.$statusCode.'] '.Url::sanitize($progress['url']), true, IOInterface::DEBUG);
|
||||
}
|
||||
fclose($job['bodyHandle']);
|
||||
|
|
|
@ -20,6 +20,7 @@ class Response
|
|||
private $code;
|
||||
private $headers;
|
||||
private $body;
|
||||
private $totalResponseTime;
|
||||
|
||||
public function __construct(array $request, $code, array $headers, $body)
|
||||
{
|
||||
|
@ -69,6 +70,20 @@ class Response
|
|||
return $this->body;
|
||||
}
|
||||
|
||||
/**
|
||||
* Total duration time it took for the response in micro seconds
|
||||
* @return int|null
|
||||
*/
|
||||
public function getTotalResponseTime()
|
||||
{
|
||||
return $this->totalResponseTime;
|
||||
}
|
||||
|
||||
public function setTotalResponseTime($totalResponseTime)
|
||||
{
|
||||
$this->totalResponseTime = $totalResponseTime;
|
||||
}
|
||||
|
||||
public function decodeJson()
|
||||
{
|
||||
return JsonFile::parseJson($this->body, $this->request['url']);
|
||||
|
|
Loading…
Reference in New Issue