web-dev-qa-db-ja.com

順次処理された複数のカールリクエストを実行するにはどうすればよいですか?

私が大きなUNIXルーキーだとすると、15分ごとにcronを介してcurlリクエストを実行しています。 -Curlは基本的に、いくつかの引数を与えられ、次のようなスクリプトとして機能するWebページ(php)をロードするために使用されます。

curl http://mysite.com/?update_=1

私が達成したいのは、このカール技術を使用して別の「スクリプト」を実行することです-他のスクリプトが実行されるたびに-他のスクリプトが実行される前に

Curlは1つのコマンドで複数のURLを受け入れることを読みましたが、これがulrsを順番に処理するのか「並列」で処理するのかわかりません。

18
Riccardo

ほとんどの場合、それらを順次処理します(テストするだけではありません)。しかし、これを行うこともできます:

1)curlrequests.shというファイルを作成します2)次のようにファイルに入れます:

curl http://mysite.com/?update_=1
curl http://mysite.com/?update_=3
curl http://mysite.com/?update_=234
curl http://mysite.com/?update_=65

3)ファイルを保存し、chmodで実行可能にします。

chmod +x curlrequests.sh

4)ファイルを実行します。

./curlrequests.sh

または

/path/to/file/curlrequests.sh

補足として、次のように&&でリクエストをチェーンできます。

curl http://mysite.com/?update_=1 && curl http://mysite.com/?update_=2 && curl http://mysite.com/?update_=3

&を使用して並列実行します。

curl http://mysite.com/?update_=1 & curl http://mysite.com/?update_=2 & curl http://mysite.com/?update_=3
45

curl man page によると:

コマンドラインで任意の数のURLを指定できます。それらは、指定された順序で順次フェッチされます。

したがって、最も単純で最も効率的な(curlはそれらすべてを単一のTCP接続)で送信します)アプローチは、それらをすべてcurlの1回の呼び出しで配置します。例:

curl http://example.com/?update_=1 http://example.com/?update_=2
6
Pierz

次のように、2つのcurlリクエストを含むスクリプトを希望の順序で記述し、それをcronで実行します。

#!/bin/bash
curl http://mysite.com/?update_=1
curl http://mysite.com/?the_other_thing
2
mbq

これはあなたが望むことを行い、入力ファイルを使用し、超高速です

#!/bin/bash
IFS=$'\n'
file=/path/to/input.txt
lines=$(cat ${file})
for line in ${lines}; do
   curl "${line}"
done
IFS=""
exit ${?}

入力ファイルの行ごとに1つのエントリ。入力ファイルの順序に従います。

それをwhatever.shとして保存し、実行可能にします

0
MitchellK

これはよりネイティブな機能を使用すると思います

//printing the links to a file
$ echo "https://stackoverflow.com/questions/3110444/
https://stackoverflow.com/questions/8445445/
https://stackoverflow.com/questions/4875446/" > links_file.txt


$ xargs curl < links_file.txt

楽しい!

0
user10089632

コマンドラインで任意の数のURLを指定できます。それらは、指定された順序で順次フェッチされます。 https://blog.zohear.com/su-kien/yen-sao-nguyen-chat-da-nang/

0
Nguyễn Hữu