开发者

if curl getinfo for HTTP CODE is not returning a code?

开发者 https://www.devze.com 2023-02-01 08:05 出处:网络
I am doing a normal curl call to a webservice and I grab the return HTTP code through $code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);

I am doing a normal curl call to a webservice and I grab the return HTTP code through

$code = curl_getinfo ($ch, CURLINFO_HTTP_CODE);

It does return me $code as 200 - which is good. But logging the curl calls now from a week, there where few calls to the same webservice which didn't return anything! so basically I am getting $code as blank.

Can someone tell me what should be going wrong under those scenarios, and if can debug it more!?

Thanks, Tanmay

-----------------------Update-------------------------

Thanks everyone for the info. Yes I was also thinking the same, its not reaching the server. I will update my code with to get curl_error && curl_errno and will update you guys soon.

Thanks again.

---------------------- Update 2--------------------------------------------------------- I did update my code to return me the error no 7 - couldn't connect to host. I 开发者_如何学Pythondid logged all the curl calls, so basically around 90-98% of curl calls are executing good. But only 1-2% of curl calls are not able to find the host! Can anyone tell me what could be the reason? and How I can prevent it?

Thanks again, Tanmay


If the cURL HTTP code returned nothing (aka '0'), that means the cURL operation failed for some reason. It would be beneficial to capture the curl_error in your logs as well as it might give you more insight to was happened in those cases (if they happen again).

PHP: curl_error


When you are logging it, check if it is blank, if it is, log more, using this function

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

My guess would be that its not able to reach the server.


You can't retrieve a curl_getinfo from a request that failed. Check the result from curl_exec to determine whether an actual HTTP request has been performed.

A connect timeout or anything of the likes is a "failed request". In that case curl_exec returns FALSE (as stated in the curl_exec Manual).


My guess is that this is a situation where no HTTP headers were returned -- i.e. the request was unsuccessful. Perhaps the server's internet access was down, or for some other reason inaccessible.

If you look at the curl_getinfo docs, it suggests checking whether an error has occurred in the example:

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

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

精彩评论

暂无评论...
验证码 换一张
取 消