Я использую curl_multi с multi для загрузки файлов на разные серверы.У каждого сервера есть несколько файлов, которые нужно загрузить, поэтому у меня есть запрос curl_multi для каждого сервера.Когда я выполняю дескрипторы curl_multi, я просто выполняю все дескрипторы curl_multi в одном и том же цикле, например:
<?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скручивать запрос?Нужно ли его вызывать для каждого небольшого количества передаваемых данных?Он использует много процессоров, и я думаю, что это потому, что он слишком занят.Так что я могу добавить сон (5);в конце каждого цикла, чтобы заставить его использовать меньше циклов ЦП, или это в основном замедлит запросы?
Я бы использовал curl_multi_select, но не могу, потому что обрабатывается несколько curl_multi_execs.