cURL性能比方法执行慢得多


cURL performance much slower than method execution

我有一个调用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,我认为是正常的。