Commit bd210511 authored by shajiaiming's avatar shajiaiming

调整请求时间

parent 176cbc54
...@@ -103,11 +103,24 @@ class Curl ...@@ -103,11 +103,24 @@ class Curl
* *
* @return mixed response * @return mixed response
*/ */
protected $connect_timeout_ms;
protected $timeout_ms;
public function __construct($config = [])
{
if (!empty($config)) {
$this->connect_timeout_ms = isset($config['connect_timeout']) ? $config['connect_timeout'] : 10;
$this->timeout_ms = isset($config['timeout_ms']) ? $config['timeout_ms'] : 100;
}
}
public function get($url, $raw = true) public function get($url, $raw = true)
{ {
$this->_baseUrl = $url; $this->_baseUrl = $url;
return $this->_httpRequest('GET', $raw); return $this->_httpRequest('GET', $raw);
} }
/** /**
* Start performing HEAD-HTTP-Request * Start performing HEAD-HTTP-Request
* *
...@@ -120,6 +133,7 @@ class Curl ...@@ -120,6 +133,7 @@ class Curl
$this->_baseUrl = $url; $this->_baseUrl = $url;
return $this->_httpRequest('HEAD'); return $this->_httpRequest('HEAD');
} }
/** /**
* Start performing POST-HTTP-Request * Start performing POST-HTTP-Request
* *
...@@ -133,6 +147,7 @@ class Curl ...@@ -133,6 +147,7 @@ class Curl
$this->_baseUrl = $url; $this->_baseUrl = $url;
return $this->_httpRequest('POST', $raw); return $this->_httpRequest('POST', $raw);
} }
/** /**
* Start performing PUT-HTTP-Request * Start performing PUT-HTTP-Request
* *
...@@ -146,6 +161,7 @@ class Curl ...@@ -146,6 +161,7 @@ class Curl
$this->_baseUrl = $url; $this->_baseUrl = $url;
return $this->_httpRequest('PUT', $raw); return $this->_httpRequest('PUT', $raw);
} }
/** /**
* Start performing PATCH-HTTP-Request * Start performing PATCH-HTTP-Request
* *
...@@ -160,8 +176,9 @@ class Curl ...@@ -160,8 +176,9 @@ class Curl
$this->setHeaders([ $this->setHeaders([
'X-HTTP-Method-Override' => 'PATCH' 'X-HTTP-Method-Override' => 'PATCH'
]); ]);
return $this->_httpRequest('POST',$raw); return $this->_httpRequest('POST', $raw);
} }
/** /**
* Start performing DELETE-HTTP-Request * Start performing DELETE-HTTP-Request
* *
...@@ -175,6 +192,7 @@ class Curl ...@@ -175,6 +192,7 @@ class Curl
$this->_baseUrl = $url; $this->_baseUrl = $url;
return $this->_httpRequest('DELETE', $raw); return $this->_httpRequest('DELETE', $raw);
} }
/** /**
* Set curl option * Set curl option
* *
...@@ -194,6 +212,7 @@ class Curl ...@@ -194,6 +212,7 @@ class Curl
//return self //return self
return $this; return $this;
} }
/** /**
* Set get params * Set get params
* *
...@@ -210,6 +229,7 @@ class Curl ...@@ -210,6 +229,7 @@ class Curl
//return self //return self
return $this; return $this;
} }
/** /**
* Set get params * Set get params
* *
...@@ -227,6 +247,7 @@ class Curl ...@@ -227,6 +247,7 @@ class Curl
//return self //return self
return $this; return $this;
} }
/** /**
* Set raw post data allows you to post any data format. * Set raw post data allows you to post any data format.
* *
...@@ -242,6 +263,7 @@ class Curl ...@@ -242,6 +263,7 @@ class Curl
//return self //return self
return $this; return $this;
} }
/** /**
* Set get params * Set get params
* *
...@@ -259,6 +281,7 @@ class Curl ...@@ -259,6 +281,7 @@ class Curl
//return self //return self
return $this; return $this;
} }
/** /**
* Get URL - return URL parsed with given params * Get URL - return URL parsed with given params
* *
...@@ -267,11 +290,12 @@ class Curl ...@@ -267,11 +290,12 @@ class Curl
public function getUrl() public function getUrl()
{ {
if (Count($this->_getParams) > 0) { if (Count($this->_getParams) > 0) {
return $this->_baseUrl.'?'.http_build_query($this->_getParams); return $this->_baseUrl . '?' . http_build_query($this->_getParams);
} else { } else {
return $this->_baseUrl; return $this->_baseUrl;
} }
} }
/** /**
* Set curl options * Set curl options
* *
...@@ -284,6 +308,7 @@ class Curl ...@@ -284,6 +308,7 @@ class Curl
$this->_options = $options + $this->_options; $this->_options = $options + $this->_options;
return $this; return $this;
} }
/** /**
* Set multiple headers for request. * Set multiple headers for request.
* *
...@@ -298,11 +323,11 @@ class Curl ...@@ -298,11 +323,11 @@ class Curl
$parsedHeader = []; $parsedHeader = [];
//collect currently set headers //collect currently set headers
foreach ($this->getRequestHeaders() as $header => $value) { foreach ($this->getRequestHeaders() as $header => $value) {
array_push($parsedHeader, $header.':'.$value); array_push($parsedHeader, $header . ':' . $value);
} }
//parse header into right format key:value //parse header into right format key:value
foreach ($headers as $header => $value) { foreach ($headers as $header => $value) {
array_push($parsedHeader, $header.':'.$value); array_push($parsedHeader, $header . ':' . $value);
} }
//set headers //set headers
$this->setOption( $this->setOption(
...@@ -312,6 +337,7 @@ class Curl ...@@ -312,6 +337,7 @@ class Curl
} }
return $this; return $this;
} }
/** /**
* Set a single header for request. * Set a single header for request.
* *
...@@ -326,11 +352,11 @@ class Curl ...@@ -326,11 +352,11 @@ class Curl
$parsedHeader = []; $parsedHeader = [];
//collect currently set headers //collect currently set headers
foreach ($this->getRequestHeaders() as $headerToSet => $valueToSet) { foreach ($this->getRequestHeaders() as $headerToSet => $valueToSet) {
array_push($parsedHeader, $headerToSet.':'.$valueToSet); array_push($parsedHeader, $headerToSet . ':' . $valueToSet);
} }
//add override new header //add override new header
if (strlen($header) > 0) { if (strlen($header) > 0) {
array_push($parsedHeader, $header.':'.$value); array_push($parsedHeader, $header . ':' . $value);
} }
//set headers //set headers
$this->setOption( $this->setOption(
...@@ -339,6 +365,7 @@ class Curl ...@@ -339,6 +365,7 @@ class Curl
); );
return $this; return $this;
} }
/** /**
* Unset a single header. * Unset a single header.
* *
...@@ -353,7 +380,7 @@ class Curl ...@@ -353,7 +380,7 @@ class Curl
//collect currently set headers and filter "unset" header param. //collect currently set headers and filter "unset" header param.
foreach ($this->getRequestHeaders() as $headerToSet => $valueToSet) { foreach ($this->getRequestHeaders() as $headerToSet => $valueToSet) {
if ($header !== $headerToSet) { if ($header !== $headerToSet) {
array_push($parsedHeader, $headerToSet.':'.$valueToSet); array_push($parsedHeader, $headerToSet . ':' . $valueToSet);
} }
} }
//set headers //set headers
...@@ -363,6 +390,7 @@ class Curl ...@@ -363,6 +390,7 @@ class Curl
); );
return $this; return $this;
} }
/** /**
* Get all request headers as key:value array * Get all request headers as key:value array
* *
...@@ -381,6 +409,7 @@ class Curl ...@@ -381,6 +409,7 @@ class Curl
} }
return $parsedRequestHeaders; return $parsedRequestHeaders;
} }
/** /**
* Get specific request header as key:value array * Get specific request header as key:value array
* *
...@@ -394,6 +423,7 @@ class Curl ...@@ -394,6 +423,7 @@ class Curl
$parsedRequestHeaders = $this->getRequestHeaders(); $parsedRequestHeaders = $this->getRequestHeaders();
return isset($parsedRequestHeaders[$headerKey]) ? $parsedRequestHeaders[$headerKey] : null; return isset($parsedRequestHeaders[$headerKey]) ? $parsedRequestHeaders[$headerKey] : null;
} }
/** /**
* Unset a single curl option * Unset a single curl option
* *
...@@ -409,6 +439,7 @@ class Curl ...@@ -409,6 +439,7 @@ class Curl
} }
return $this; return $this;
} }
/** /**
* Unset all curl option, excluding default options. * Unset all curl option, excluding default options.
* *
...@@ -422,6 +453,7 @@ class Curl ...@@ -422,6 +453,7 @@ class Curl
} }
return $this; return $this;
} }
/** /**
* Total reset of options, responses, etc. * Total reset of options, responses, etc.
* *
...@@ -449,6 +481,7 @@ class Curl ...@@ -449,6 +481,7 @@ class Curl
$this->_getParams = []; $this->_getParams = [];
return $this; return $this;
} }
/** /**
* Return a single option * Return a single option
* *
...@@ -462,6 +495,7 @@ class Curl ...@@ -462,6 +495,7 @@ class Curl
//return value or false if key is not set. //return value or false if key is not set.
return isset($mergesOptions[$key]) ? $mergesOptions[$key] : false; return isset($mergesOptions[$key]) ? $mergesOptions[$key] : false;
} }
/** /**
* Return merged curl options and keep keys! * Return merged curl options and keep keys!
* *
...@@ -471,6 +505,7 @@ class Curl ...@@ -471,6 +505,7 @@ class Curl
{ {
return $this->_options + $this->_defaultOptions; return $this->_options + $this->_defaultOptions;
} }
/** /**
* Get curl info according to http://php.net/manual/de/function.curl-getinfo.php * Get curl info according to http://php.net/manual/de/function.curl-getinfo.php
* *
...@@ -487,6 +522,7 @@ class Curl ...@@ -487,6 +522,7 @@ class Curl
return []; return [];
} }
} }
/** /**
* Performs HTTP request * Performs HTTP request
* *
...@@ -508,8 +544,8 @@ class Curl ...@@ -508,8 +544,8 @@ class Curl
} }
//setup error reporting and profiling //setup error reporting and profiling
if (YII_DEBUG) { if (YII_DEBUG) {
Yii::trace('Start sending cURL-Request: '.$this->getUrl().'\n', __METHOD__); Yii::trace('Start sending cURL-Request: ' . $this->getUrl() . '\n', __METHOD__);
Yii::beginProfile($method.' '.$this->_baseUrl.'#'.md5(serialize($this->getOption(CURLOPT_POSTFIELDS))), __METHOD__); Yii::beginProfile($method . ' ' . $this->_baseUrl . '#' . md5(serialize($this->getOption(CURLOPT_POSTFIELDS))), __METHOD__);
} }
/** /**
* proceed curl * proceed curl
...@@ -517,6 +553,11 @@ class Curl ...@@ -517,6 +553,11 @@ class Curl
$curlOptions = $this->getOptions(); $curlOptions = $this->getOptions();
$this->curl = curl_init($this->getUrl()); $this->curl = curl_init($this->getUrl());
curl_setopt_array($this->curl, $curlOptions); curl_setopt_array($this->curl, $curlOptions);
if (true == $this->timeout_ms && true == $this->connect_timeout_ms) {
curl_setopt($this->curl, CURLOPT_TIMEOUT_MS, $this->timeout_ms);
curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, $this->timeout_ms);
curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT_MS, $this->connect_timeout_ms);
}
//curl_setopt($this->curl, CURLOPT_TIMEOUT,40); //curl_setopt($this->curl, CURLOPT_TIMEOUT,40);
$response = curl_exec($this->curl); $response = curl_exec($this->curl);
//check if curl was successful //check if curl was successful
...@@ -547,7 +588,7 @@ class Curl ...@@ -547,7 +588,7 @@ class Curl
$this->_extractAdditionalCurlParameter(); $this->_extractAdditionalCurlParameter();
//end yii debug profile //end yii debug profile
if (YII_DEBUG) { if (YII_DEBUG) {
Yii::endProfile($method.' '.$this->getUrl().'#'.md5(serialize($this->getOption(CURLOPT_POSTFIELDS))), __METHOD__); Yii::endProfile($method . ' ' . $this->getUrl() . '#' . md5(serialize($this->getOption(CURLOPT_POSTFIELDS))), __METHOD__);
} }
//check responseCode and return data/status //check responseCode and return data/status
if ($this->getOption(CURLOPT_CUSTOMREQUEST) === 'HEAD') { if ($this->getOption(CURLOPT_CUSTOMREQUEST) === 'HEAD') {
...@@ -557,10 +598,11 @@ class Curl ...@@ -557,10 +598,11 @@ class Curl
return $this->response; return $this->response;
} }
} }
/** /**
* Extract additional curl params protected class helper * Extract additional curl params protected class helper
*/ */
protected function _extractAdditionalCurlParameter () protected function _extractAdditionalCurlParameter()
{ {
/** /**
* retrieve response code * retrieve response code
...@@ -581,27 +623,29 @@ class Curl ...@@ -581,27 +623,29 @@ class Curl
* try extract response length * try extract response length
*/ */
$this->responseLength = curl_getinfo($this->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD); $this->responseLength = curl_getinfo($this->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
if((int)$this->responseLength == -1) { if ((int)$this->responseLength == -1) {
$this->responseLength = strlen($this->response); $this->responseLength = strlen($this->response);
} }
} }
/** /**
* Extract body curl data from response * Extract body curl data from response
* *
* @param string $response * @param string $response
* @return string * @return string
*/ */
protected function _extractCurlBody ($response) protected function _extractCurlBody($response)
{ {
return substr($response, $this->getInfo(CURLINFO_HEADER_SIZE)); return substr($response, $this->getInfo(CURLINFO_HEADER_SIZE));
} }
/** /**
* Extract header curl data from response * Extract header curl data from response
* *
* @param string $response * @param string $response
* @return array * @return array
*/ */
protected function _extractCurlHeaders ($response) protected function _extractCurlHeaders($response)
{ {
//Init //Init
$headers = []; $headers = [];
......
...@@ -20,7 +20,7 @@ class Chain33Service ...@@ -20,7 +20,7 @@ class Chain33Service
public function __construct($parameter = []) public function __construct($parameter = [])
{ {
if(empty($parameter)){ if (empty($parameter)) {
$this->node_params = Yii::$app->params['chain33']; $this->node_params = Yii::$app->params['chain33'];
} else { } else {
$this->node_params = $parameter; $this->node_params = $parameter;
...@@ -56,7 +56,11 @@ class Chain33Service ...@@ -56,7 +56,11 @@ class Chain33Service
public function send($params = [], $method = 'Chain33.Query') public function send($params = [], $method = 'Chain33.Query')
{ {
$ch = new Curl(); $timeout = [
'connect_timeout' => 50000,
'timeout_ms' => 40000
];
$ch = new Curl($timeout);
$jsonrpc = self::jsonRpcBuild($params, $method); $jsonrpc = self::jsonRpcBuild($params, $method);
$ch->setHeader('Content-Type', 'application/json'); $ch->setHeader('Content-Type', 'application/json');
$ch->setRawPostData($jsonrpc); $ch->setRawPostData($jsonrpc);
...@@ -203,7 +207,7 @@ class Chain33Service ...@@ -203,7 +207,7 @@ class Chain33Service
return $this->send($params, 'Chain33.CreateRawTransaction'); return $this->send($params, 'Chain33.CreateRawTransaction');
} }
public function createRawTransaction($to, $amount, $fee, $note,$execer) public function createRawTransaction($to, $amount, $fee, $note, $execer)
{ {
$params = [ $params = [
"to" => $to, "to" => $to,
......
...@@ -51,7 +51,6 @@ class CrossChainController extends Controller ...@@ -51,7 +51,6 @@ class CrossChainController extends Controller
'scheme' => $transfer_url[0], 'scheme' => $transfer_url[0],
'host' => str_replace('//', '', $transfer_url[1]), 'host' => str_replace('//', '', $transfer_url[1]),
'port' => isset($transfer_url[2]) ? $transfer_url[2] : '', 'port' => isset($transfer_url[2]) ? $transfer_url[2] : '',
'timeout' => 100
]; ];
$service = new Chain33Service($node_params); $service = new Chain33Service($node_params);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment