PHP Quick Function For Asynchronous Multi Curl
If you are here, it probably means that you have a problem – you have a bunch of URLs that you need to cURL, but doing it linearly (one by one) is too slow. This is where
curl_multi_init
comes in. It is the asynchronous version of curl and it will help you to save lots of time (by that i mean like 80-90%)
So anyway, below is a quick function for you to use. Feel free to modify it according to your needs.
function get_content_of_urls($urls)
{
// array of curl handles
$multi_curl = array();
// data to be returned
$results = array();
// init multi handle
$mh = curl_multi_init();
$i = 0;
foreach ($urls as $url)
{
$multi_curl[$i] = curl_init();
curl_setopt($multi_curl[$i], CURLOPT_URL,$url);
curl_setopt($multi_curl[$i], CURLOPT_HEADER, 0);
curl_setopt($multi_curl[$i], CURLOPT_RETURNTRANSFER,1);
curl_multi_add_handle($mh, $multi_curl[$i]);
$i++;
}
$index=null;
do {
curl_multi_exec($mh,$index);
} while($index > 0);
// get content and remove handles
foreach($multi_curl as $k => $ch) {
$results[$k] = curl_multi_getcontent($ch);
curl_multi_remove_handle($mh, $ch);
}
return $results;
}
If you require any assistance, feel free to let me know in the comments below.
Be First to Comment