curl-and-php
Re: PHP Timeout Error in multi_curl
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