0

ローリングカールと呼ばれる優れたマルチカールインターフェースを使用しています

http://code.google.com/p/rolling-curl/issues/detail?id=20

たとえば、約 3 秒で 20 のサイトからデータを取得します。問題は、同じサーバー上にある 200 ~ 300 のサイトで動作する必要があることです。これは、ループ内で単一の CURL リクエストを作成するのにかかる時間とほぼ同じで、約 10 分 47 秒です。だから、どうしようか、ちょっと悩んでいます。各サイトの HTTP コードを取得するだけです。file_get_contents、PHP FTP 関数を試しましたが、はるかに遅いです。

もう1つのことは、同じサーバー上にある12以上のドメインのリストを実行すると、リクエストがブロックされているように見えるため、どのサイトでもデータがまったく返されないことです. 12 未満のリストを実行する場合、この問題は発生しません。サイトのヘッダー データをフェッチするだけなので、それほど遅くはありません。

誰かが私を助けてくれたり、この問題を克服する方法についての指針とともになぜこれが起こっているのかについて詳細な説明をくれたら、私は信じられないほど感謝しています.

4

1 に答える 1

0

これは、ライブラリがサーバーごとの同時リクエストを抑制しているようです。あなたがそれを設定できるかどうか見てみましょう。たとえば、これはソースコードとその理由の説明にあります。

class RollingCurl {
    /**
     * @var int
     *
     * Window size is the max number of simultaneous connections allowed.
     *
     * REMEMBER TO RESPECT THE SERVERS:
     * Sending too many requests at one time can easily be perceived
     * as a DOS attack. Increase this window_size if you are making requests
     * to multiple servers or have permission from the receving server admins.
     */
     private $window_size = 5;

また、これはあなたにとって興味深いかもしれません:

ステータスコードを取得するには、通常、HEADリクエストだけで十分ですが、cUrlはそれをサポートしています。

于 2012-06-25T12:52:00.540 に答える