できるだけ速くたくさんの小ページをダウンロードする必要があります。 1ページの平均サイズは3KBです。何百万ものページがあります。まず、curl
を試してみましたが、それはサーバーが要求を応答するのを待ってから次のページに対して同じプロセスを実行していました。
curl -O "http://website.com/pages/[0000001-1000000].html"
_
編集:いくつかのテストをした後、私はこれらの結果を観察しました。私はいつもより多くの提案に開かれています。もっとスピードを向上させたいのですが。
遅い:
curl -O "http://website.com/pages/[1-1000].html" -s -S
_
より速く:
curl -O "http://90.111.123.222/pages/[1-1000].html" -s -S
_
たくさんの小ページをダウンロードするときは、DNS遅延が重要です。
遅い:
curl -O "http://90.111.123.222/pages/{1}.html" -s -S ::: $(seq 1 1000)
_
より速く:
curl -O "http://90.111.123.222/pages/[1-1000].html" -s -S
_
遅い:
time parallel -j 5 curl -O \'"http://90.111.123.222/pages/{1}.html"\'
-S -s ::: $(seq 1 1000)
_
より速く:
( time curl -O "http://90.111.123.222/pages/[1-200].html" -s -S &
time curl -O "http://90.111.123.222/pages/[201-400].html" -s -S &
time curl -O "http://90.111.123.222/pages/[401-600].html" -s -S &
time curl -O "http://90.111.123.222/pages/[601-800].html" -s -S &
time curl -O "http://90.111.123.222/pages/[801-1000].html" -s -S & )
_
BTW、より多くのインスタンスを実行すると、両方のメソッドのスピードがあるポイントに向上します。
あなたはあなたの操作をいくつかのより小さな操作に縮小することによってこれをスピードアップします。たとえば、10個のCURLプロセスと背景を作成することができます。
curl -O "http://website.com/pages/0[000000-999999].html" &
curl -O "http://website.com/pages/1[000000-999999].html" &
curl -O "http://website.com/pages/2[000000-999999].html" &
...
_
等々。
ただし、よりスマートでより柔軟なソリューションを使用することをお勧めします GNU Parallel タスクディストリビューションを並列処理しながら、並行して複数のファイルをダウンロードできます。
選択したあなたのパッケージマネージャでそれをインストールしてください。
parallel -j 10 curl -O "http://website.com/pages/{1}" ::: $(seq -w 1000000)
_
これはもっと優雅なものです