我有一個設置,我有兩臺運行瘦客戶機(Apache,PHP)的服務器。在服務器A上,它考慮客戶端計算機並連接到服務器B以通過Restful API獲取數據。兩臺服務器都在同一個網絡上。服務器B,請求的響應如下所示:PHP Curl API響應時間與不同服務器不同
{
"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。我認爲API的curl
的時間與API報告的時間非常相似。據我所知,API不考慮網絡流量和速度來打開連接 - 但18秒與0.43對我而言似乎很陌生。
這裏的任何想法?
哪些數據是API發回?此數據有多大 –
數據正在以JSON形式發回。它可能相當大 - 不確定大小,但對於一個示例文件,內容長度爲「內容長度:136917」。 – gregavola
服務器將事情發回給服務器的下載速度是多少。過去我已經看到了一些128kps的設置,所以你應該研究一下! –