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

// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "http://www.aljazeera.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.bbc.com/news");
curl_setopt($ch2, CURLOPT_HEADER, 0);

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

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

//close the handles
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

?>

Am getting this error after waiting for five minutes " Fatal error: Maximum execution time of 300 seconds exceeded in C:\xampp\htdocs\curl\curl_multi_init.php on line 27" anyone with idea what could be the problem i have got the code from php official website and tweaked it a little bit.

  • 1
    Possible duplicate of [Fatal error: Maximum execution time of 30 seconds exceeded](https://stackoverflow.com/questions/5164930/fatal-error-maximum-execution-time-of-30-seconds-exceeded) – bishop Aug 21 '17 at 19:22
  • according to that post its telling me to add more time "ini_set('max_execution_time', 300); //300 seconds = 5 minutes" . i had already done that. I think its supposed to execute faster because am only dealing with two websites!! – Lightningbbrains Aug 21 '17 at 19:26
  • Perhaps those websites are throttling you. – bishop Aug 21 '17 at 19:28
  • I have tried with different websites also. And nothing seems to work. – Lightningbbrains Aug 21 '17 at 19:36
  • 1
    curl versions after 7.20.0 do not return `CURLM_CALL_MULTI_PERFORM`. You need a different check, as explained in this [duplicate](https://stackoverflow.com/questions/19490837/curlm-call-multi-perform-deprecated). – bishop Aug 21 '17 at 19:43
  • Yeah that makes sense. – Lightningbbrains Aug 21 '17 at 19:52

1 Answers1

2

Try this code instead:

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

// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "http://www.aljazeera.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.bbc.com/news");
curl_setopt($ch2, CURLOPT_HEADER, 0);

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

$active = null;
//execute the handles
do {
    $mrc = curl_multi_exec($mh, $active);
    curl_multi_select($mh);
} while ($active > 0);

//close the handles
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

Not sure why it works, but I got this from "user contributed notes" (http://php.net/manual/en/function.curl-multi-exec.php)

Felippe Duarte
  • 14,901
  • 2
  • 25
  • 29