如何使用cURL一次測量請求和響應時間?
cURL支援格式化輸出請求的詳細資訊(請參閱cURL手冊頁的<code>-w、–write out<format></code>擷取更多資訊)。
如題,我們将隻關注如何知曉cURL請求的時間細節, 下面時間以s為機關。
1. 建立一個文本檔案curl-format.txt, 粘貼下面内容
2.發起請求
<code>url -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"</code>
在windows機器上是<code>curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"</code>
<code>-w "@curl-format.txt"</code> 通知cURL使用格式化的輸出檔案
<code>-o /dev/null</code> 将請求的輸出重定向到/dev/null
<code>-s</code> 通知cURL不顯示進度條
<code>"http://wordpress.com/"</code> 是我們請求的URL,請使用引号包圍(尤其當你的URL包含&查詢字元串)
輸出的啥意思呢? 我解釋一下:
time_namelookup:DNS 域名解析的時候,就是把http://wordpress.com 轉換成ip位址的過程
time_connect:TCP 連接配接建立的時間,就是三次握手的時間
time_appconnect:SSL/SSH等上層協定建立連接配接的時間,比如 connect/handshake 的時間
time_pretransfer:從請求開始到響應開始傳輸的時間
time_starttransfer:從請求開始到第一個位元組将要傳輸的時間
time_total:這次請求花費的全部時間
<code>alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o /dev/null -s "</code>
腳本不需要單獨的包含格式化的文本。
在可執行路徑中,建立名為curltime的檔案,粘貼下面内容:
把下面的指令寫入curltime.bat:
<code>curl -w "@%~dp0curl-format.txt" -o NUL -s %*</code>
以上手段後,<code>curltime wordpress.org</code>就可以拿到cURL的請求耗時。
cURL還有一個小技巧,模拟連接配接/傳輸逾時。
連接配接逾時時間用<code>--connect-timeout</code>參數來指定,資料傳輸的最大允許時間用<code>-m</code>參數來指定。
連接配接逾時的話,出錯提示形如:
<code>curl: (28) connect() timed out!</code>
資料傳輸的最大允許時間逾時的話,出錯提示形如:
<code>curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received</code>
本文來自部落格園,作者:{有态度的馬甲},轉載請注明原文連結:https://www.cnblogs.com/JulianHuang/p/15682055.html
歡迎關注我的原創技術、職場公衆号, 加好友談天說地,一起進化
