With this code I can get response of time:
$tBefore = new DateTime();
// curl get data
$tAfter = new DateTime();
But this code return to me sum of send and receive time.
I want to get send and receive time separate.
Example:
Send: From my server -> To another server // How long?
// Process on another server
Receive: From another server -> To my server // How long?
CodePudding user response:
You won't be able to achieve this precisely.
curl
(or any HTTP request) doesn't know when a request is being received by the remote server. No "thanks for the request, I'll get back to you when I'm done" packet is sent.
Most of the time, a HTTP request takes a few milliseconds round-trip. If an additional response (with the thank you) would be sent, the real response would follow immediately.
Also, HTTP (v1 at least) is always a ping-pong protocol. This means, that one request always gets one response. Sure, it could be implemented, but this is not in the standard and would not be used pretty much.
Anyway, the only way you could achieve this is by letting the remote server send along the time, the request was received and the time, the response is being sent out - for example in a custom header. But this would require both servers to be in perfect sync time-wise. But this is hard to achieve if not even out of your hands. Even if both servers use NTP, for latency reasons to the time server, differences up to 200ms could occur.
So, if your local server is a tad bit behind the remote server, your request time could actually be negative