Dưới đây là một tập dữ liệu nhỏ mà từ đó tôi đang cố trả lời hai câu hỏi:Làm cách nào tôi có thể ước tính thời gian kết nối proxy cho yêu cầu cURL bằng cách sử dụng giá trị CURLINFO _ * _ TIME?
- Proxy mất bao lâu để kết nối với máy chủ API?
- Yêu cầu API mất bao nhiêu thời gian để trả lại?
Các mã cơ bản như sau:
$c = curl_init(); // assume all options set correctly
$time = microtime(true);
$response = curl_exec($c);
$curl_info = curl_getinfo($c); // Returns each `*_TIME` field
$response_time = microtime(true)-$time; // Returns total PHP execution time
Từ trên, chúng tôi xây dựng này:
id response_time NAMELOOKUP_TIME CONNECT_TIME APPCONNECT_TIME PRETRANSFER_TIME STARTTRANSFER_TIME REDIRECT_TIME TOTAL_TIME
1 0.250691 0.000191 0.025070 NULL 0.181040 0.250239 0.000000 0.250306
2 0.958577 0.000129 0.022764 NULL 0.136846 0.664099 0.000000 0.957881
3 0.578614 0.000053 0.021111 NULL 0.127998 0.44.000000 0.577812
bao nhiêu thời gian đã được chi tiêu về proxy vs yêu cầu api cho mỗi bên trên ?
Các cURL Documentation là hữu ích nhưng tôi không chắc chắn làm thế nào để trả lời câu hỏi của tôi ở trên với các phần có liên quan từ các tài liệu:
TOTAL_TIME Total time of previous transfer.
NAMELOOKUP_TIME Time from start until name resolving completed.
CONNECT_TIME Time from start until remote host or proxy completed.
APPCONNECT_TIME Time from start until SSL/SSH handshake completed.
PRETRANSFER_TIME Time from start until just before the transfer begins.
STARTTRANSFER_TIME Time from start until just when the first byte is received.
REDIRECT_TIME Time taken for all redirect steps before the final transfer.
Biểu đồ bao gồm là hữu ích để xem cách những lần chồng lên :
|
|--NAMELOOKUP
|--|--CONNECT
|--|--|--APPCONNECT
|--|--|--|--PRETRANSFER
|--|--|--|--|--STARTTRANSFER
|--|--|--|--|--|--TOTAL
|--|--|--|--|--|--REDIRECT
Nhưng tôi vẫn không chắc chắn nên phân bổ thời gian kết nối proxy. Dưới đây là cùng biểu đồ với nhận xét của tôi:
|
|--NAMELOOKUP // DNS, clearly not proxy. Also insignificant values.
|--|--CONNECT // Does this count toward Proxy Time?
|--|--|--APPCONNECT // Not set (likely due to non-https transaction)
|--|--|--|--PRETRANSFER // Does this count toward Proxy Time?
|--|--|--|--|--STARTTRANSFER // Stop proxy time? So Proxy Time = STARTTRANSFER?
|--|--|--|--|--|--TOTAL // Would TOTAL-STARTRANSFER = API Request Time?
|--|--|--|--|--|--REDIRECT // Always 0 (???)
Đây là cách thức hoạt động của HTTP Proxy. Các mục CURLINFO _ * _ ở trên phù hợp với biểu đồ này ở đâu?