我有一个调用api在我的应用程序通过cURL到我的另一个应用程序,代码看起来像这样:
$target = 'api/someMethod';
$url = self :: buildUrl($target);
$paramString = self :: buildParamString(array(
'request' => $request,
'partner' => $_SESSION['DataPartner'],
'token' => $_SESSION['DataToken']
));
$t = microtime(true);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $paramString,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 600,
CURLOPT_CONNECTTIMEOUT => 60,
));
$curlResponse = curl_exec($curl);
Log :: i(microtime(true) - $t); // ~400ms
这个cURL调用大约需要400ms。问题是它从
中检索数据的方法public function someMethod() {
$t = microtime(true);
// create the response, some SQL, etc
Log :: i(microtime(true) - $t); // ~20ms
echo $response;
}
运行大约需要20ms。所以cURL在400ms内执行,但是它从中获取数据的方法在20ms内执行。
怎么了?
curl的执行总是比单独的方法慢,至少多1毫秒;)。我看不出你的情况有什么缓慢的不同。如果你把请求时间,网络,服务器响应和所有这些加起来,在一个非常强大的服务器环境中,你至少会得到200ms,所以,这400ms,我认为是正常的。