我使用curl_multi和multi来上传文件到不同的服务器。每个服务器都有多个需要上传的文件,所以我对每个服务器都有一个curl_multi请求。当我执行curl_multi把手,我只是执行所有的curl_multi在同一个循环来处理,就像这样:curl_multi_exec必须被调用多少次?
<?php
do {
$continue_running=false;
foreach($handles as $host => $handle) {
if(!is_resource($handle[0])) {
die("\nHandle is not a resource!\n");
}
if($running_{$host}) {
if(curl_multi_exec($handles[$host][0], $running_{$host}) != CURLM_OK) {
die("\ncurl_multi_exec failed!\n");
}
$continue_running=true;
}
if(!$running_{$host} && !$done_{$host}) {
echo "$host finished in ".(microtime(1)-$start)." seconds\n";
$done_{$host}=true;
}
}
} while ($continue_running);
?>
我想知道是,是否curl_multi_exec实际上有多少次在一个卷曲的请求被称为?是否需要传输每一点数据?它使用了很多CPU,我认为它是因为它的“繁忙循环”太多。所以我可以加睡觉(5);在每个循环结束时使它使用更少的cpu周期,还是这会大大减缓请求的速度?
我会使用curl_multi_select,但我不能因为正在处理多个curl_multi_execs。