У меня есть настройка, где у меня есть два сервера с тонким клиентом (Apache, PHP). На сервере A рассматривается клиентская машина и подключается к серверу B для получения данных через Restful API. Оба сервера находятся в одной сети. На сервере B, ответ запроса показан ниже:Время отклика API Curl API отличается от другого сервера
{
"code": 200,
"response_time": {
"time": 0.43,
"measure": "seconds"
}
}
Сервер Б вычисляет время заполненное для каждой задачи с помощью microseconds
, чтобы пометить начало и конец блока запроса. Но когда я использую curl
на сервере А, чтобы сделать вызов на сервер 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's использовал свой API с другого сервера, который не является сервером API. Я бы подумал, что время для curl
API будет очень похоже на время, указанное API. Я понимаю, что API не учитывает сетевой трафик и скорость, чтобы открыть соединение, но мне кажется, что 18 секунд против 0,43.
Любые идеи здесь?
Каких данных это API отправка обратно? & Насколько велики эти данные –
Данные отправляются как JSON.Он может быть довольно большим - не уверен в размере, но длина контента - «Content-Length: 136917» для одного файла образца. – gregavola
Какова скорость загрузки вашего сервера, когда он отправляет обратно на него. Я видел, что в прошлом был установлен на 128 кпс, поэтому вы должны изучить это! –