sbutt Posted October 4, 2007 Share Posted October 4, 2007 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. Quote Link to comment https://forums.phpfreaks.com/topic/71813-php-timeout-error-in-multi_curl/ Share on other sites More sharing options...
sKunKbad Posted October 4, 2007 Share Posted October 4, 2007 Just increase the number of seconds for your timeout to something bigger, like: curl_setopt($conn[$i], CURLOPT_TIMEOUT, 115); Quote Link to comment https://forums.phpfreaks.com/topic/71813-php-timeout-error-in-multi_curl/#findComment-361734 Share on other sites More sharing options...
sbutt Posted October 4, 2007 Author Share Posted October 4, 2007 Actually it's not a problem of timeout, because if it is then it should also not work on the other php/curl mentioned version. Quote Link to comment https://forums.phpfreaks.com/topic/71813-php-timeout-error-in-multi_curl/#findComment-361751 Share on other sites More sharing options...
sbutt Posted October 6, 2007 Author Share Posted October 6, 2007 - Quote Link to comment https://forums.phpfreaks.com/topic/71813-php-timeout-error-in-multi_curl/#findComment-363361 Share on other sites More sharing options...
d.shankar Posted October 6, 2007 Share Posted October 6, 2007 Then i think some function you used in the code above may be deprecated in the recent versions of cURL. :'( Quote Link to comment https://forums.phpfreaks.com/topic/71813-php-timeout-error-in-multi_curl/#findComment-363493 Share on other sites More sharing options...
sbutt Posted October 9, 2007 Author Share Posted October 9, 2007 Hi, I have tried to find out which particular method is depreciated in curl 7.17.0, that I'm using in my code, but no success . Could anybody please help me out? thanks. Quote Link to comment https://forums.phpfreaks.com/topic/71813-php-timeout-error-in-multi_curl/#findComment-365357 Share on other sites More sharing options...
sbutt Posted October 9, 2007 Author Share Posted October 9, 2007 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. Quote Link to comment https://forums.phpfreaks.com/topic/71813-php-timeout-error-in-multi_curl/#findComment-365471 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.