Skip to content

Instantly share code, notes, and snippets.

@Hadryan
Forked from Yarkhan/request_async.php
Created May 22, 2017 10:47
Show Gist options
  • Save Hadryan/fb8687b84ce8c742cb490cf96132ebd9 to your computer and use it in GitHub Desktop.
Save Hadryan/fb8687b84ce8c742cb490cf96132ebd9 to your computer and use it in GitHub Desktop.
multiple parallel asynchronous requests on php
<?php
/**
* PHP7 OF GTFO
*/
function request_async(array $urls, callable $callback){
$multiHandle = curl_multi_init();
$handles = [];
foreach($urls as $key => $url){
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiHandle,$ch);
$handles[$key] = $ch;
}
$running = true;
while($running) curl_multi_exec($multiHandle, $running);
$result = [];
foreach($handles as $key => $handle){
$result[$key] = curl_getinfo($handle);
$result[$key]['data'] = curl_multi_getcontent($handle);
curl_multi_remove_handle($multiHandle, $handle);
}
curl_multi_close($multiHandle);
$callback($result);
}
$urls=[];
for($i=0;$i<1;$i++){
$urls[]='localhost/async/sleep.php';
}
request_async($urls,function($response){
var_dump($response);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment