我有一个设置,其中有两台运行轻客户端(Apache、PHP)的服务器。在A服务器上,它被视为客户机,并通过 Restful API 连接到 B 服务器以获取数据。两个服务器都在同一网络中。在 B 服务器上,请求的响应如下所示:
{
"code": 200,
"response_time": {
"time": 0.43,
"measure": "seconds"
}
}
服务器 B 使用 microseconds
标记请求块的开始和结束来计算每个任务的完成时间。但是当我使用 curl
在服务器 A 上调用服务器 B 时,执行时间的结果非常奇怪:
$url = "https://example.com/api";
/*server B address. I've tried IP address as well without any change in results.
This must go over a SSL connection. */
$start_time = microtime(true);
$curl2 = curl_init();
curl_setopt($curl2, CURLOPT_URL, $url);
curl_setopt($curl2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl2, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl2, CURLOPT_USERAGENT, "Server A User Agent");
$result = curl_exec($curl2);
$HttpCode = curl_getinfo($curl2, CURLINFO_HTTP_CODE);
$total_time = curl_getinfo($curl2, CURLINFO_TOTAL_TIME);
$connect_time = curl_getinfo($curl2, CURLINFO_CONNECT_TIME);
$namelookup_time = curl_getinfo($curl2, CURLINFO_NAMELOOKUP_TIME);
$end_time = microtime(true);
$timeDiff = round(((float)$end_time - (float)$start_time), 3);
每次检查时间,我都会得到以下结果:
$timeDiff = 18.7381 (Using Microseconds)
$total_time = 18.7381 (Transfer Time)
$connect_time = 0.020679
$namelookup_time = 0.004144
所以我不确定为什么会出现这种情况。是否有更好的方式从网络中另一台持有 API 的服务器中获取数据?就像 Twitter 的网站从不是 API 服务器的另一个服务器消费他们的 API 一样。我认为使用 `curl` 访问 API 的时间应该与 API 报告的时间相当。我理解 API 不考虑网络流量和连接打开速度,但 18 秒与 0.43 秒之间的差异对我来说很奇怪。你有什么想法吗?