Jump to content

PHP Timeout Error in multi_curl


sbutt

Recommended Posts

I'm executing this code from: http://de2.php.net/manual/de/function.curl-multi-exec.php

 

<?php 
$connomains = array( 
   "http://www.cnn.com/", 
   "http://www.canada.com/", 
   "http://www.yahoo.com/" 
); 

$mh = curl_multi_init(); 

foreach ($connomains as $i => $url) { 
  $conn[$i] = curl_init($url); 
  curl_setopt($conn[$i], CURLOPT_TIMEOUT, 15);  //added myself
  curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, TRUE); 
  curl_multi_add_handle ($mh,$conn[$i]); 
} 

// start performing the request 
do { 
  $mrc = curl_multi_exec($mh, $active); 
} while ($mrc == CURLM_CALL_MULTI_PERFORM); 

while ($active and $mrc == CURLM_OK) { 
  // wait for network 
  if (curl_multi_select($mh) != -1) { 
    // pull in any new data, or at least handle timeouts 
    do { 
      $mrc = curl_multi_exec($mh, $active); 
    } while ($mrc == CURLM_CALL_MULTI_PERFORM); 
  } 
} 

if ($mrc != CURLM_OK) { 
  print "Curl multi read error $mrc\n"; 
} 

// retrieve data 
foreach ($connomains as $i => $url) { 
  if (($err = curl_error($conn[$i])) == '') { 
    $res[$i]=curl_multi_getcontent($conn[$i]); 
  } else { 
    print "Curl error on handle $i: $err\n"; 
  } 
  curl_multi_remove_handle($mh,$conn[$i]); 
  curl_close($conn[$i]); 
} 
curl_multi_close($mh); 

print_r($res); 
?> 

 

but getting this error: Curl error on handle 0: Connection time-out after 15996 ms Curl error on handle 1: Connection time-out after 15996 ms Curl error on handle 2: Connection time-out after 15996 ms.

 

my php version: PHP Version 5.2.4

my curl version: curl-7.17.0

 

Could anybody tell me why is this error coming?

 

Surprisingly the above code works fine on PHP Version 5.1.4, and curl-7-15-3 :(

 

thanks in advance.

Link to comment
Share on other sites

In another example code:

 

<?php
// create both cURL resources
$ch1 = curl_init();
$ch2 = curl_init();

// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "http://slycl1154.st1.spray.net/dev/sbutt/util/overTure.xml");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch1, CURLOPT_TIMEOUT, 2);
curl_setopt($ch2, CURLOPT_URL, "http://slycl1154.st1.spray.net/dev/sbutt/util/inkToMe.xml");
curl_setopt($ch2, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_TIMEOUT, 2);


//create the multiple cURL handle
$mh = curl_multi_init();

//add the two handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$running=null;
//execute the handles
do {
   
curl_multi_exec($mh,$running);
//sleep(3);
echo "Feed :".$running;

} while ($running > 0);
//close the handles
curl_multi_remove_handle($mh,$ch1);
curl_multi_remove_handle($mh,$ch1);
curl_multi_close($mh);

?> 

 

the script just hangs when i run it with specification:

 

PHP Version 5.2.4

curl-7.17.0

 

The strange thing is when i remove the timeouts

curl_setopt($ch1, CURLOPT_TIMEOUT, 2); and curl_setopt($ch2, CURLOPT_TIMEOUT, 2);

the script starts working.

 

The mentioned 2 feeds are very small which obviously require time in milliseconds to load and hence no problem comes.

 

But when i change the same code and include for example *www.cnn.com* as one of my urls then problem starts to appear again even with or without timeouts.

 

Another strange thing is that when i run all these above scenarios with older specification:

PHP Version 5.1.4

curl-7-15-3

 

no problem comes.

 

--

 

Now in the end, could anybody tell me if the problem i have mentioned above is related to specification:

 

PHP Version 5.2.4

curl-7.17.0

 

and if yes then with PHP or CURL?

 

In my opinion it has something to do with the timeout but then in libcurl or php wrapper?

 

thanks.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.