Browse Source

added profile and logging to connection

tags/2.0.0-beta
Carsten Brandt 11 years ago
parent
commit
ee538faff7
  1. 25
      extensions/elasticsearch/Connection.php

25
extensions/elasticsearch/Connection.php

@ -213,12 +213,7 @@ class Connection extends Component
if (!empty($options)) { if (!empty($options)) {
$url .= '?' . http_build_query($options); $url .= '?' . http_build_query($options);
} }
return $url;
$host = $this->nodes[$this->activeNode]['http_address'];
if (strncmp($host, 'inet[/', 6) == 0) {
$host = substr($host, 6, -1);
}
return 'http://' . $host . '/' . $url;
} }
protected function httpRequest($method, $url, $requestBody = null) protected function httpRequest($method, $url, $requestBody = null)
@ -264,13 +259,23 @@ class Connection extends Component
unset($options[CURLOPT_WRITEFUNCTION]); unset($options[CURLOPT_WRITEFUNCTION]);
} }
$curl = curl_init($url); $host = $this->nodes[$this->activeNode]['http_address'];
if (strncmp($host, 'inet[/', 6) == 0) {
$host = substr($host, 6, -1);
}
Yii::trace("Sending request to elasticsearch node '$host' $url\n$requestBody", __METHOD__);
Yii::beginProfile($url . $requestBody, __METHOD__);
$curl = curl_init('http://' . $host . '/' . $url);
curl_setopt_array($curl, $options); curl_setopt_array($curl, $options);
curl_exec($curl); curl_exec($curl);
$responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); $responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl); curl_close($curl);
Yii::endProfile($url . $requestBody, __METHOD__);
if ($responseCode >= 200 && $responseCode < 300) { if ($responseCode >= 200 && $responseCode < 300) {
if ($method == 'HEAD') { if ($method == 'HEAD') {
return true; return true;
@ -278,7 +283,7 @@ class Connection extends Component
if (isset($headers['content-length']) && ($len = mb_strlen($body, '8bit')) < $headers['content-length']) { if (isset($headers['content-length']) && ($len = mb_strlen($body, '8bit')) < $headers['content-length']) {
throw new Exception("Incomplete data received from elasticsearch: $len < {$headers['content-length']}", [ throw new Exception("Incomplete data received from elasticsearch: $len < {$headers['content-length']}", [
'requestMethod' => $method, 'requestMethod' => $method,
'requestUrl' => $url, 'requestUrl' => 'http://' . $host . '/' . $url,
'requestBody' => $requestBody, 'requestBody' => $requestBody,
'responseCode' => $responseCode, 'responseCode' => $responseCode,
'responseHeaders' => $headers, 'responseHeaders' => $headers,
@ -290,7 +295,7 @@ class Connection extends Component
} }
throw new Exception('Unsupported data received from elasticsearch: ' . $headers['content-type'], [ throw new Exception('Unsupported data received from elasticsearch: ' . $headers['content-type'], [
'requestMethod' => $method, 'requestMethod' => $method,
'requestUrl' => $url, 'requestUrl' => 'http://' . $host . '/' . $url,
'requestBody' => $requestBody, 'requestBody' => $requestBody,
'responseCode' => $responseCode, 'responseCode' => $responseCode,
'responseHeaders' => $headers, 'responseHeaders' => $headers,
@ -302,7 +307,7 @@ class Connection extends Component
} else { } else {
throw new Exception("Elasticsearch request failed with code $responseCode.", [ throw new Exception("Elasticsearch request failed with code $responseCode.", [
'requestMethod' => $method, 'requestMethod' => $method,
'requestUrl' => $url, 'requestUrl' => 'http://' . $host . '/' . $url,
'requestBody' => $requestBody, 'requestBody' => $requestBody,
'responseCode' => $responseCode, 'responseCode' => $responseCode,
'responseHeaders' => $headers, 'responseHeaders' => $headers,

Loading…
Cancel
Save