Иногда curl_multi_exec повторяет запросы

Я делаю некоторые запросы с curl_multi_exec. Мой код выглядит следующим образом:

$rMultiHandler = curl_multi_init();

//next lines are repeated for several resources
$rResource = curl_init();       
curl_setopt($rResource, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($rResource, CURLOPT_URL, $url);
curl_setopt($rResource, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($rResource, CURLOPT_TIMEOUT, 1800);
curl_setopt($rResource, CURLOPT_SSL_VERIFYPEER, false);
curl_multi_add_handle($rMultiHandler, $rResource);
//-----------------------

$iRunningProcesses = null;
do {
    curl_multi_exec($rMultiHandler, $iRunningProcesses);
    usleep(100000);
} while ($iRunningProcesses > 0);

//do some work with received data;

curl_multi_close($rMultiHandler);

Проблема в том, что эти запросы занимают много времени (5-10 минут). И иногда один из этих запросов (самый длинный) повторяется дважды. Похоже, что curl некоторое время ждет данных, ничего не получает и повторяет запрос.
Как исправить это поведение?

1 ответ

  1. Проблема была в неправильной конфигурации Apache и fcgi. После увеличения времени ожидания проблема ушла (timeoutдля apache FcgidIOTimeoutи FcgidBusyTimeoutдля fcgi).