请求之间的 PHP cURL multi_exec 延迟

Edi*_*lic 5 php multithreading curl delay curl-multi

如果我运行标准的 cURL_multi_exec 函数(下面的示例),我会立即获得所有 cURL 句柄。我想在每个请求之间延迟 100 毫秒,有没有办法做到这一点?(在 Google 和 StackOverflow 搜索中没有找到)

我在 curl_multi_exec() 之前尝试过 usleep() ,这会减慢脚本的速度但不会推迟每个请求。

// 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);
Run Code Online (Sandbox Code Playgroud)

我整天都在研究这个,任何帮助将不胜感激!谢谢你。

编辑:任何其他非 cUrl 方法?这也能回答我的问题。

tro*_*skn 3

别以为你可以。如果您从 cli 运行此命令,则可以将脚本分叉为 10 个进程,然后从每个进程中触发常规的 curl 请求。这将使您能够对时间进行细粒度的控制。