40media How can I figure out why cURL is hanging and unresponsive?


How can I figure out why cURL is hanging and unresponsive?



I am trying to track down an issue with a cURL call in PHP. It works fine in our test environment, but not in our production environment. When I try to execute the cURL function, it just hangs and never ever responds. I have tried making a cURL connection from the command line and the same thing happens.

I'm wondering if cURL logs what is happening somewhere, because I can't figure out what is happening during the time the command is churning and churning. Does anyone know if there is a log that tracks what is happening there?

I think it is connectivity issues, but our IT guy insists I should be able to access it without a problem. Any ideas? I'm running CentOS and PHP 5.1.

Updates: Using verbose mode, I've gotten an error 28 "Connect() Timed Out". I tried extending the timeout to 100 seconds, and limiting the max-redirs to 5, no change. I tried pinging the box, and also got a timeout. So I'm going to present this back to IT and see if they will look at it again. Thanks for all the help, hopefully I'll be back in a half-hour with news that it was their problem.

Update 2: Turns out my box was resolving the server name with the external IP address. When IT gave me the internal IP address and I replaced it in the cURL call, everything worked great. Thanks for all the help everybody.


UDP sockets in ad hoc network (Ubuntu 9.10)

1:

How do I manage a Python based daemon on Linux?
In your php, you must set the CURLOPT_VERBOSE variable:. When is a program limited by the memory bandwidth?
curl_setopt($curl, CURLOPT_VERBOSE, TRUE); 
This then logs to STDERR, or to the file specified using CURLOPT_STDERR (which takes a file pointer):. How to properly set URL rewrite rules for a php script to only accept POST
curl_setopt($curl, CURLOPT_STDERR, $fp); 
From the command line, you must use the following switches:. Parsing line with delimiter in Python
  • --verbose to report more info to the command line
  • --trace <file> or --trace-ascii <file> to trace to a file
You must use --trace-time to prepend time stamps to verbose/file outputs. How to restart C daemon program in Linux after receiving SIGHUP signal
Find if file data is an image (php)Code assistance in Netbeans on Linux

2:

If at all possible, try sudo ing as the user PHP runs under (possibly the one Apache runs under). . The curl problem could have various reasons this require a user input, for case an untrusted certificate this is stored in the trusted certificates cache of the root user, although not the PHP one. In this case, the command would be waiting for an input this never happens.. Update: This applies only if you run curl externally using exec - maybe it doesn't apply..

3:

You must also use curl_receive info() to receive information around your specific transfer.. http://in.php.net/manual/en/function.curl-receive info.php.

4:

Have you tried setting CURLOPT_MAXREDIRS? I've found this any times there will be an 'infinite' redirect loop for any websites this a normal browser user doesn't see..


88 out of 100 based on 63 user ratings 218 reviews