19

3 回に 1 回ほど NoHttpResponseException を返す一部の Http クライアント接続で問題が発生しています。

私の仮説は、ファイアウォールがアイドル状態の接続を閉じているというものです (異常ではありません)。これを模倣するためにcurlを使用したいと思います。

私はこのようなことを試みてきましたが、おそらく接続がアイドル状態になることはありません

curl --keepalive-time 60 --limit-rate 128B $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL $URL

私が欲しいのは、似たようなものです

curl $URL
sleep 10
curl $URL    
sleep 20
curl $URL 
sleep 30
curl $URL 

毎回 (魔法を使って!) Curl は同じ接続を再利用します。

curl (または wget) を使用してこれを行う方法はありますか?プログラムを作成する必要はありません。

4

3 に答える 3

22

netcat でできないことはありません。

REQ="GET / HTTP/1.1\nHost: localhost\nAccept: *\n\n"
(echo -ne $REQ; sleep 1; echo -ne $REQ; sleep 2; echo -ne $REQ) | netcat localhost 80

必要に応じてパスを / 以外のものに変更してください...

于 2013-01-28T22:44:44.923 に答える
6

いいえ、curlもwgetもこれを行う方法はありません。ツールが終了すると、すべての接続が閉じられます。

あなたにとって最良の選択肢は、スクリプト言語と、おそらくよりプログラム的な方法ですべてのカールの魔法を実行できるlibcurlバインディングを使用することだと思います。そうすれば、リクエストを実行し、10秒間スリープしてから別のリクエストを実行すると、可能な限り同じ接続が再利用されます。

選択したほとんどすべてのプログラミング言語で使用できるlibcurlバインディングがあり、libcurlを使用しない場合でも、同じように簡単ではないかもしれませんが、おそらくこの機能を実現できます。

于 2013-01-23T09:13:36.407 に答える
0

よくわかりませんが、プログラミングオプションの使用を許可した場合、PHPのマルチカールで期待どおりの結果が得られるため、スリープも使用する必要はありません。マルチカールは、すべてのリクエストを並列プロセスで実行します。

Muti-Curl

使用したい場合は、コードをお送りします。

于 2013-01-29T08:28:16.810 に答える