If I run a standard cURL_multi_exec function (example below), I get all cURL handles requested at once. I would like to put a delay of 100ms between each request, is there a way to do that? (nothing found on Google & StackOverflow search)
I’ve tried usleep() before curl_multi_exec() which slows down the script but does not postpone each request.
// array of curl handles & results
$curlies = array();
$result = array();
$mh = curl_multi_init();
// setup curl requests
for ($id = 0; $id <= 10; $id += 1) {
$curlies[$id] = curl_init();
curl_setopt($curlies[$id], CURLOPT_URL, "http://google.com");
curl_setopt($curlies[$id], CURLOPT_HEADER, 0);
curl_setopt($curlies[$id], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($mh, $curlies[$id]);
}
// execute the handles
$running = null;
do {
curl_multi_exec($mh, $running);
} while($running > 0);
// get content and remove handles
foreach($curlies as $id => $c) {
$result[$id] = curl_multi_getcontent($c);
curl_multi_remove_handle($mh, $c);
}
// all done
curl_multi_close($mh);
I’m working on this all day, any help would be greatly appreciated! Thank you.
EDIT: Any other non-cUrl method? That would also answer my question.
Don’t think you can. If you run this from the cli, you could instead fork your script into 10 processes and then fire regular curl requests from each. That would allow you fine grained control over the timing.