7

PHP (および cURL) を使用して単純な Web クローラーを作成しました。これはおよそ 60,000 の html ページを解析し、製品情報を取得します (イントラネット上のツールです)。

私の主な関心事は、同時接続です。接続数を制限したいので、何が起こっても、クローラーは 15 を超える同時接続を決して使用しません。

IP による 25 の同時接続の制限に達すると、サーバーは IP をブロックします。何らかの理由で、サーバー側でそれを変更することはできないため、スクリプトが X を超える同時接続を使用しないようにする方法を見つける必要があります。 .

これは可能ですか?

それとも、全体を別の言語で書き直すべきでしょうか?

ありがとう、助けていただければ幸いです!

4

2 に答える 2

5

curl_set_opt(CURLOPT_MAXCONNECTS, 15);接続数を制限するために使用できます。ただし、それでもうまくいかない場合は、単純な接続マネージャーを作成することもできます。

于 2010-02-09T21:38:16.910 に答える
0

簡単な接続テーブルを書くかもしれません:

target_IP           |   active_connections

1.2.3.4                 10
4.5.6.7                 5

各curL呼び出しは接続数を増やし、閉じるたびに減らします。

テーブルを mySQL テーブルまたは速度のためにMemcacheに格納できます。

すでに接続数が最大になっている IP に遭遇した場合は、「後で試す」キューを実装する必要があります。

于 2010-02-09T21:45:49.240 に答える