cURL / Mailing Lists / curl-and-php / Single Mail

curl-and-php

Re: PHP Timeout Error in multi_curl

From: Suleman Butt <suleman.butt_at_gmail.com>
Date: Tue, 9 Oct 2007 17:22:41 +0200

In another example code:

[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);

?>
[/code]

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 [code]curl_setopt($ch1,
CURLOPT_TIMEOUT, 2); and curl_setopt($ch2, CURLOPT_TIMEOUT, 2);[/code] 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.
On 10/4/07, Suleman Butt <suleman.butt_at_gmail.com> wrote:
>
> 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 [image: Sad]
>
> thanks in advance.

_______________________________________________
http://cool.haxx.se/cgi-bin/mailman/listinfo/curl-and-php
Received on 2007-10-09