1. ホーム
  2. カール

[解決済み】cURLを使用して、リクエストとレスポンスタイムを一度に測定する方法は?

2022-03-23 22:03:13

質問

JSON形式のデータを受信し、データを処理して、その結果を要求者に返すWebサービスがあります。

リクエスト時間、レスポンス時間、合計時間を cURL .

私のリクエスト例は次のようになります。

curl -X POST -d @file server:port

で計測しており、現在は time というコマンドをLinuxで実行します。

time curl -X POST -d @file server:port

timeコマンドは 合計 とはいえ、これは私が求めているものとはまったく違うのですが。

を使用して、リクエストとレスポンスタイムを測定する方法はありますか? cURL ?

解決方法は?

この素晴らしいブログ記事から... https://blog.josephscott.org/2011/10/14/timing-details-with-curl/

cURL はリクエストの詳細について、フォーマットされた出力をサポートしています ( 詳細はcURLのマニュアルページ の下にある -w, –write-out <format> ). ここでは、提供されるタイミングの詳細のみに焦点を当てます。以下の時刻は .

  1. 新規にファイルを作成します。 curl-format.txt を、貼り付けてください。

         time_namelookup:  %{time_namelookup}s\n
            time_connect:  %{time_connect}s\n
         time_appconnect:  %{time_appconnect}s\n
        time_pretransfer:  %{time_pretransfer}s\n
           time_redirect:  %{time_redirect}s\n
      time_starttransfer:  %{time_starttransfer}s\n
                         ----------\n
              time_total:  %{time_total}s\n
    
    
  2. リクエストをする

     curl -w "@curl-format.txt" -o /dev/null -s "http://wordpress.com/"
    
    

    あるいは、Windowsでは...

     curl -w "@curl-format.txt" -o NUL -s "http://wordpress.com/"
    
    


これは何をするものなのか

-w "@curl-format.txt" フォーマットファイルを使用するようにcURLに指示します。

-o /dev/null リクエストの出力を /dev/null にリダイレクトします。

-s プログレスメーターを表示しないようにcURLに指示する

"http://wordpress.com/" は は、要求しているURLです。特にURLに "&"クエリ文字列パラメータがある場合は、引用符を使用してください。



そして、返ってきたのがこちら。

   time_namelookup:  0.001s
      time_connect:  0.037s
   time_appconnect:  0.000s
  time_pretransfer:  0.037s
     time_redirect:  0.000s
time_starttransfer:  0.092s
                   ----------
        time_total:  0.164s

マイクロ秒単位で結果を出力するオプションはまだ見たことがありませんが、ご存知の方は下のコメント欄に投稿してください。



Linux/Macのショートカット(エイリアス)を作る

alias curltime="curl -w \"@$HOME/.curl-format.txt\" -o /dev/null -s "

そうすれば、単純に...を呼び出すことができます。

curltime wordpress.org

コメントいただいたPete Doyleさん、ありがとうございました。



Linux/Mac用スタンドアローンスクリプトの作成

このスクリプトでは、別途 .txt ファイルに書式を記述します。

新しいファイルを作成します。 curltime を、実行パスのどこかに貼り付けてください。

#!/bin/bash

curl -w @- -o /dev/null -s "$@" <<'EOF'
    time_namelookup:  %{time_namelookup}\n
       time_connect:  %{time_connect}\n
    time_appconnect:  %{time_appconnect}\n
   time_pretransfer:  %{time_pretransfer}\n
      time_redirect:  %{time_redirect}\n
 time_starttransfer:  %{time_starttransfer}\n
                    ----------\n
         time_total:  %{time_total}\n
EOF

そして、エイリアスと同じように呼び出します。

curltime wordpress.org



Windowsのショートカット(通称BATファイル)を作成する

というテキストファイルを新規に作成します。 curltime.bat と同じフォルダーにある curl.execurl-format.txt をクリックし、次の行をペーストしてください。

curl -w "@%~dp0curl-format.txt" -o NUL -s %*

そして、コマンドラインから、単純に呼び出すことができます。

curltime wordpress.org

(このフォルダがWindowsの PATH 変数を使用することで、どのフォルダからでもコマンドを使用できるようになります)。