jtanmay
jtanmay

Reputation: 2647

if curl getinfo for HTTP CODE is not returning a 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 did 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

Upvotes: 7

Views: 9774

Answers (4)

Michael Irigoyen
Michael Irigoyen

Reputation: 22947

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

Upvotes: 4

lonesomeday
lonesomeday

Reputation: 237905

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'];
}

Upvotes: 0

Linus Kleen
Linus Kleen

Reputation: 34632

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).

Upvotes: 0

profitphp
profitphp

Reputation: 8354

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.

Upvotes: 0

Related Questions