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.

6
  • 1
    Possible duplicate of Fatal error: Maximum execution time of 30 seconds exceeded Commented Aug 21, 2017 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!! Commented Aug 21, 2017 at 19:26
  • Perhaps those websites are throttling you. Commented Aug 21, 2017 at 19:28
  • I have tried with different websites also. And nothing seems to work. Commented Aug 21, 2017 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. Commented Aug 21, 2017 at 19:43

1 Answer 1

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)

Sign up to request clarification or add additional context in comments.

2 Comments

It works because curl versions after 7.20.0 do not return CURLM_CALL_MULTI_PERFORM.
Yeah Its Working!!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.