если curl getinfo для HTTP CODE не возвращает код? - PullRequest
7 голосов
/ 22 декабря 2010

Я делаю обычный вызов curl для веб-службы и получаю HTTP-код возврата через

$code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);

Он возвращает мне код $ как 200 - и это хорошо. Но теперь ведение логовых звонков начинается с недели, там, где мало обращений к одному и тому же веб-сервису, который ничего не возвращал! так что в основном я получаю $ code как пустое.

Может кто-нибудь сказать мне, что должно быть не так в этих сценариях, и если может отладить это больше !?

Спасибо, Tanmay

----------------------- Обновление ----------------------- -

Спасибо всем за информацию. Да, я тоже думал о том, что сервер не доходит. Я обновлю свой код, чтобы получить curl_error && curl_errno, и скоро обновлю вас, ребята.

Еще раз спасибо.

---------------------- Обновление 2 ----------------------- ---------------------------------- Я обновил свой код, чтобы вернуть мне ошибку № 7 - не удалось подключиться к хосту. Я зарегистрировал все вызовы curl, так что примерно 90-98% вызовов curl выполняются хорошо. Но только 1-2% вызовов curl не могут найти хост! Может кто-нибудь сказать мне, в чем может быть причина? и как я могу это предотвратить?

Еще раз спасибо, Tanmay

Ответы [ 4 ]

4 голосов
/ 22 декабря 2010

Если код HTTP cURL ничего не возвратил (он же '0'), это означает, что операция cURL по какой-то причине завершилась неудачно.Было бы полезно зафиксировать curl_error в ваших журналах, а также дать вам больше информации о том, что произошло в этих случаях (если они повторятся).

PHP: curl_error

0 голосов
/ 22 декабря 2010

Вы не можете получить curl_getinfo из запроса, который не удался.Проверьте результат из curl_exec, чтобы определить, был ли выполнен фактический HTTP-запрос.

Тайм-аут соединения или что-то в этом роде является «неудачным запросом».В этом случае curl_exec возвращает FALSE (как указано в curl_exec Manual ).

0 голосов
/ 22 декабря 2010

Я предполагаю, что это ситуация, когда HTTP-заголовки не были возвращены - то есть запрос был неудачным. Возможно, доступ к Интернету на сервере был недоступен или по какой-либо другой причине недоступен.

Если вы посмотрите на curl_getinfo документы , он предлагает проверить, не произошла ли ошибка в примере:

if(!curl_errno($ch))
{
    $info = curl_getinfo($ch);

    echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
}
0 голосов
/ 22 декабря 2010

Когда вы регистрируете его, проверьте, если оно пустое, если оно есть, зарегистрируйте больше, используя эту функцию

http://www.php.net/manual/en/function.curl-getinfo.php

Я думаю, что он не может связаться с сервером.

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