2011-08-02 12 views
1

私はcURLを使用して私のウェブサイトからいくつかのデータを読み込もうとしています。これは私のサーバーに1分間に約50-60件のリクエストを実行しています。約30件のリクエストで、スクリプトが機能しなくなったようですが、私のカール要求から突然ステータスコード500が返ってくることがわかりました。cURL - サーバーが突然ステータスコード500で応答します - なぜですか?

ルーチンは何も特別なものではなく、実際の日が月末になるまで増やします。毎日私は何かを読んでいます(このコードの一部ではありません)。

次のコードは、どのように私がcURL要求を行うかを示しています。 30回のリクエストの後、500回戻ってきますが、ループなしでもう一度試してみると31回のリクエストしか得られませんので、大量のリクエストではうまく動作しません。

問題が発生している可能性のある候補はありますか?

ありがとう!

  // To get an ASP.NET SessionID I first visit the page as usual... 
    $c = curl_init(); 
    curl_setopt($c, CURLOPT_URL, "http://www.mypage.de/mysite.aspx"); 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($c, CURLOPT_COOKIEFILE, "cookies.txt"); 
    curl_setopt($c, CURLOPT_COOKIEJAR, "cookies.txt"); 
    $o = curl_exec($c); 
    curl_close($c); 

    //start the request 
    $c = curl_init(); 
    curl_setopt($c, CURLOPT_URL, "http://www.mypage.de/mysite.aspx"); 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($c, CURLOPT_COOKIEFILE, "cookies.txt"); 
    curl_setopt($c, CURLOPT_COOKIEJAR, "cookies.txt"); 
    curl_setopt($c, CURLOPT_HTTPHEADER, array('Content-Length' => '999')); 

    curl_setopt($c, CURLOPT_POST, true); 
    curl_setopt($c, CURLOPT_HEADER, 1); 


    $headers = array(); 
    //$headers[] = "Referer: http://www.mypage.de/mysite.aspx"; 
    //$headers[] = "Content-Length: 999"; 

    $data = "somevalidpostdata"; 

    curl_setopt($c, CURLOPT_POSTFIELDS, $data); 
    $o = curl_exec($c); 
    $status = curl_getinfo($c, CURLINFO_HTTP_CODE); 
    echo "\r\n" . $status . "\r\n"; 
    curl_close($c); 

おかげで、 WorldSignia

+0

おそらくいくつかの洪水対策?または、実際にサーバーに過負荷がかかっています。 – Robus

+0

私はちょうどスクリプトを止めてそれをやり直すことができるので、すぐに私の結果を得ることができるので、私はそうは思わない –

答えて

2

500は、内部サーバーエラーを意味します。

多すぎるリクエストを送信している可能性があります。 usleep(500000);をリクエスタの間に追加してください。

+0

それはまだ動作しませんよね –

1

HTTP500は、要求の処理中に何か問題が発生したことを意味します。 http://www.mypage.de/mysite.aspxにエラーが何であるか見る必要があります。あなたが検査できるメッセージまたはペイロードのプロパティはありますか?アプリケーションによってスローされたエラーが含まれている可能性があります。

スクリプトが接続しているアプリケーションを制御しているかどうかは不明です。そうでない場合は、ページを削っているだけですから、各リクエストの前に数秒のスリープ状態を導入して、脅威管理ゲートウェイアプリケーションがスクリプトをブロックします(基本的にDoS攻撃なので)。また、対象のウェブサイトにあるRobots.txtの存在を確認して尊重する必要があります。

+0

rhhh私はそれを解決しました。 cURLを実行することは絶対にありません。 私のパラメータを構築するために、私はこのような文字列を持っていました: 123:123,456,789 | 123:123,456,789 私はこれを|サイン、そして、サイン。残念ながら、ハードコードされた文字列は|このように記号: 123:123,456,789 | 123:123,456,789 これは残念なことに、正しく分割されていないという問題を引き起こしました。 ありがとう、 WorldSignia –

関連する問題