cURL - 服务器突然响应状态码500 - 为什么?

时间:2011-08-02 14:21:24

标签: php curl

我正在尝试使用cURL从我的网站上读取一些数据。 Todo这我每分钟运行大约50-60个请求到我的服务器。在大约30个请求中,似乎脚本停止工作但我发现我突然从我的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

2 个答案:

答案 0 :(得分:2)

500表示内部服务器错误

也许您发送的请求太快了。 尝试在requets之间添加usleep(500000);

答案 1 :(得分:1)

HTTP500表示处理请求时服务器出错。您需要查看http://www.mypage.de/mysite.aspx上的错误。是否有可以检查的消息或有效负载属性?它可能包含应用程序抛出的错误。

我不清楚你是否控制了脚本连接的应用程序?如果没有,并且您只是在抓一个页面,那么您应该在每个请求之前引入几秒钟的睡眠,否则威胁管理网关应用程序将阻止您的脚本(因为它基本上是拒绝服务攻击)。您还应检查并尊重目标网站上Robots.txt的存在。