2012-05-08 5 views
3

私は多くのウェブページのインデックスを作成しようとしています。 CURL使用して、いくつかの(わずか約15)少なくとも最近更新されたURLの 「接続を確立できませんでした」または「connect()がタイムアウトしました」と多くの実行後にCURLが失敗します

  • 照会論文のURLを取得するCRONジョブ
  • を使用してPHPスクリプトを呼び出すショート

    問題

    開発中にすべてがうまくいった。しかし、私がいくつかのテストページをはるかに多く索引付けし始めたとき、CURLはいくつかの実行後に動作することを拒否しました。リモートサーバーからデータを取得することはありません。

    エラーメッセージ

    CURLは(もちろんないで1回)をプリントアウトしているこれらのエラー

    1. は0バイトが
    2. を受けて
    3. 操作は60000ミリ秒後にタイムアウトしたホストに接続できませんでした

    私はV-Serverに取り組んでおり、Firefoxまたはwgetを使用してリモートサーバーに接続しようとしました。また何もない。しかし、私のローカルマシンからそのリモートサーバに接続すると、すべて正常に動作します。

    いくつかの時間を待って、いくつかの実行のために再び動作します。

    私にとっては、リモートサーバーやDDOS保護などの問題のように思えますが、あなたはどう思いますか?

  • +0

    httpエラーコード –

    +0

    失敗した場合はhttpステータスコードは常に0です – Robert

    +0

    wget/FF経由でローカルマシンから接続するとどういう意味ですか?違いはなんですか? – petr

    答えて

    1
    あなたのIPがして、サイトによって遮断することができるよう、あなたがあまりにも多くのリクエストを送信するときは、プロキシを使用する必要があります

    それらのDDoS保護または同様の設定。ここで

    は注意すべき代は以下のとおりです。(私はウェブサイトの件のデータを掻き取るために使用したもの)

    1.Useプロキシ。ランダムなユーザーエージェントcronsで

    3.Randomリファラー

    4.Random遅延2.Use

    requets間5.Random遅延。私はどうなるのか

    は、スクリプトがこれまでに立候補との間に睡眠を追加しますです。

    ignore_user_abort(1); 
    set_time_limit(0); 
    

    URLを1秒間訪問して起動すると、永遠に実行されます。

    1

    スクリプトはどのくらいの頻度で実行されますか?実際には、DOSのような保護を引き起こす可能性があります。私は彼らがより多くの「自然な」見えるようにするためにいくつかの時間だけ遅れているように見えるの要求をするためにいくつかのランダムな遅延を実装推薦

    +0

    スクリプトは毎分実行しました、私はすでに5分に変更しました。毎回実行すると5から20の要求が送信されます。 – Robert

    +0

    そして、私は遅延を実装しました:すべての要求の間にランダムに1から5秒です。それはあまりにも小さかったと思いますか? – Robert

    +0

    それはうまく見えます - 5分ごとに20回のリクエストが必要です – petr

    関連する問題