curl を使用して PHP ベースのクローラーをコーディングしようとしています。クロールする必要がある 20,000 ~ 30,000 の URL のデータベースがあります。curl を呼び出して Web ページをフェッチするたびに、約 4 ~ 5 秒かかります。
これを最適化し、ページのフェッチに必要な時間を短縮するにはどうすればよいですか?
curl を使用して PHP ベースのクローラーをコーディングしようとしています。クロールする必要がある 20,000 ~ 30,000 の URL のデータベースがあります。curl を呼び出して Web ページをフェッチするたびに、約 4 ~ 5 秒かかります。
これを最適化し、ページのフェッチに必要な時間を短縮するにはどうすればよいですか?
そのために使えますcurl_multi_*
。1 つのマルチ ハンドルに追加する curl リソースの量は、実行する並列リクエストの量です。通常、返されるコンテンツのサイズに応じて、20 ~ 30 のスレッドから開始します (スクリプトがメモリ制限で終了しないことを確認してください)。
最も遅いリクエストを実行するのにかかる限り実行されることに注意してください。そのため、リクエストがタイムアウトした場合、非常に長い間待機する可能性があります。これを回避するには、タイムアウトを許容できる値に設定することをお勧めします。
コード例は、私の回答の別のスレッドで見ることができます。