使用這段代碼,我可以得到時間的回應:
$tBefore = new DateTime();
// curl get data
$tAfter = new DateTime();
但是這個代碼給我回傳了發送和接收時間的總和。
我想單獨獲得發送和接收時間。
示例:
發送。從我的服務器 -> 到另一個服務器 // 多長時間?
//在另一個服務器上處理。
//在另一臺服務器上進行處理
接收。從另一個服務器-> 到我的服務器//多長時間?接收:從另一個服務器-> 到我的服務器//多長時間?
uj5u.com熱心網友回復:
你將無法精確地實作這一點。
curl(或任何HTTP請求)不知道遠程服務器何時收到請求。沒有 "謝謝你的請求,我完成后會給你回復 "的資料包被發送。
大多數情況下,一個HTTP請求需要幾毫秒的往返時間。如果一個額外的回應(包括感謝)被發送,真正的回應將立即出現。
此外,HTTP(至少是v1版)始終是一個乒乓協議。這意味著,一個請求總是得到一個回應。當然,它可以被實作,但這并不在標準中,也不會被廣泛使用。
無論如何,你可以實作這一點的唯一方法是讓遠程服務器發送收到請求的時間和正在發送回應的時間--例如在一個自定義頭中。但這需要兩個服務器在時間上完全同步。但這是很難實作的,甚至不在你的掌握之中。即使兩個服務器都使用 NTP,由于到時間服務器的延遲原因,可能會出現長達 200ms 的差異。
因此,如果你的本地服務器稍微落后于遠程服務器,你的請求時間實際上可能是負的
。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/319762.html
標籤:
上一篇:無法將分支部署到Heroku
