cURL - Сервер неожиданно отвечает с кодом состояния 500 - Почему? - PullRequest
1 голос
/ 02 августа 2011

Я пытаюсь прочитать некоторые данные с моего сайта, используя cURL.Для этого я выполняю около 50-60 запросов в минуту на мой сервер.Примерно при 30 запросах кажется, что сценарий перестал работать, но я обнаружил, что неожиданно получаю код состояния 500 из моих запросов curl.

Процедура ничего особенного, она увеличивает фактический день месяца додостигает конца месяцаКаждый день я читаю что-то (не являющееся частью этого кода).

Следующий код показывает, как я делаю запросы 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 ]

2 голосов
/ 02 августа 2011

500 означает Внутренняя ошибка сервера .

Возможно, вы слишком быстро отправляете запросы. Попробуйте добавить usleep(500000); между реквизитами.

1 голос
/ 02 августа 2011

HTTP500 означает, что что-то пошло не так на сервере при обработке запроса.Вам нужно будет узнать, что это за ошибка http://www.mypage.de/mysite.aspx. Существует ли свойство сообщения или полезной нагрузки, которое вы можете проверить?Может содержать ошибку, выданную приложением.

Неясно, контролируете ли вы приложение, к которому подключается ваш скрипт?Если нет, и вы просто очищаете страницу, то вам определенно следует ввести спящий режим в несколько секунд, прежде чем каждый запрос, иначе приложения-шлюзы управления угрозами заблокируют ваш сценарий (поскольку это в основном атака типа «отказ в обслуживании»).Также вы должны проверять и уважать наличие Robots.txt на целевом веб-сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...