如果用于HTTP CODE的curl getinfo没有返回代码?

时间:2010-12-22 19:46:17

标签: php curl

我正在对web服务进行正常的curl调用,并通过

获取返回的HTTP代码
$code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);

它确实将$ code返回给200 - 这很好。 但是现在从一周开始记录curl调用,很少有人调用同一个没有返回任何东西的web服务!所以基本上我把$ code作为空白。

有人可以告诉我在这些情况下应该出现什么问题,以及是否可以调试更多!?

谢谢, Tanmay

-----------------------更新----------------------- -

感谢大家的信息。是的我也在想同样的事情,它没有到达服务器。我将更新我的代码以获取curl_error&& curl_errno并会尽快更新你们。

再次感谢。

----------------------更新2 ----------------------- ---------------------------------- 我更新了我的代码以返回错误号7 - 无法连接到主机。 我确实记录了所有curl调用,所以基本上大约90-98%的curl调用执行良好。但只有1-2%的卷曲调用无法找到主机!谁能告诉我可能是什么原因?以及如何防止它?

再次感谢, Tanmay

4 个答案:

答案 0 :(得分:4)

如果cURL HTTP代码没有返回任何内容(也称为“0”),则表示cURL操作由于某种原因失败。捕获日志中的curl_error以及它可能会让您更深入了解这些情况(如果它们再次发生)将是有益的。

PHP: curl_error

答案 1 :(得分:0)

当您记录它时,检查它是否为空白,如果是,请使用此功能记录更多

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

我的猜测是它无法到达服务器。

答案 2 :(得分:0)

您无法从失败的请求中检索curl_getinfo。检查curl_exec的结果,以确定是否已执行实际的HTTP请求。

连接超时或任何类似的是“失败的请求”。在这种情况下,curl_exec返回FALSE(如curl_exec Manual中所述)。

答案 3 :(得分:0)

我的猜测是,这是一种没有返回HTTP头的情况 - 即请求不成功。也许服务器的互联网访问已经关闭,或者由于某些其他原因无法访问。

如果查看curl_getinfo docs,建议检查示例中是否发生了错误:

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

    echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
}