天天看點

如何使用cURL獲得請求/響應具體耗時?

如何使用cURL一次測量請求和響應時間?

cURL支援格式化輸出請求的詳細資訊(請參閱cURL手冊頁的<code>-w、–write out&lt;format&gt;</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包含&amp;查詢字元串)

輸出的啥意思呢? 我解釋一下:

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

歡迎關注我的原創技術、職場公衆号, 加好友談天說地,一起進化

如何使用cURL獲得請求/響應具體耗時?