Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP cURL timeout is not working

Tags:

php

curl

I'm having a server issue. I'm running a local server (for developing) and I've changed my local server from MAMP to XAMPP. However, on XAMPP, the cURL option CURLOPT_TIMEOUT_MS or CURLOPT_CONNECTTIMEOUT_MS gives me the next error:

Warning: curl_setopt() expects parameter 2 to be long, string given

Is this because of the PHP or cURL version? Maybe a configuration setting?

curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT_MS, 2500);

Additional information:

  • OSX 10.6.8
  • PHP 5.3.1
  • cURL 7.19.7

Thanks in advance.


Edit: There seems to be some confusion about the error and the variable to set. The error states that parameter 2 is invalid. Not parameter 3. So the CURLOPT_CONNECTTIMEOUT_MS seems to be the issue.

curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT_MS, 2500);
            ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^
parameter:     #1                 #2               #3

Fun fact: var_dump(CURLOPT_CONNECTTIMEOUT_MS); displays string(25) "CURLOPT_CONNECTTIMEOUT_MS". Just like the error states, it's a string instead of a float.

like image 217
Tim S. Avatar asked Jan 30 '12 10:01

Tim S.


1 Answers

For some reason, CURLOPT_CONNECTTIMEOUT_MS is defined incorrectly in your version of PHP. I'd check with whatever distribution of PHP you're using and find out whether it's a general bug.

The correct value is 156: you should be able to use this instead:

curl_setopt($this->ch, /*CURLOPT_CONNECTTIMEOUT_MS */ 156, 2500);

NB that you really really really need to add comments explaining why you're doing this.

like image 54
lonesomeday Avatar answered Oct 12 '22 07:10

lonesomeday