Как ограничить по времени curl запрос?
Использую multi_curl для параллельных запросов на сервер.
$multi = curl_multi_init();
foreach ($array as $item) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "http://{$item['ip_address']}/...",
CURLOPT_FRESH_CONNECT => true,
CURLOPT_NOBODY => true,
CURLOPT_CONNECTTIMEOUT_MS => 200,
CURLOPT_TIMEOUT_MS => 2000
]);
curl_multi_add_handle($multi, $ch);
}
...
$running = null;
do {
curl_multi_exec($multi, $running);
} while ($running);
...
Log::info(json_encode(['info' => curl_getinfo($data['channel']));
Из 100 параллельных запросов 3 могут выполняться больше 5 сек (total_time":5.166296). Если ещё раз запустить скрипт, то уже другие запросы могут так отвалиться, а первые нормально выполняться с кодом 200. Как сделать так, чтобы total_time не превышал хотябы 2 сек. ?
Результат в логах у ондного такого запроса:
"info":{
"url":"...",
"content_type":null,
"http_code":0,
"header_size":0,
"request_size":0,
"filetime":-1,
"ssl_verify_result":0,
"redirect_count":0,
"total_time":5.286024,
"namelookup_time":0,
"connect_time":0,
"pretransfer_time":0,
"size_upload":0,
"size_download":0,
"speed_download":0,
"speed_upload":0,
"download_content_length":-1,
"upload_content_length":-1,
"starttransfer_time":0,
"redirect_time":0,
"redirect_url":"",
"primary_ip":"",
"primary_port":0,
"local_ip":"",
"local_port":0,
"http_version":0,
"protocol":0,
"ssl_verifyresult":0,
"scheme":"",
"appconnect_time_us":0,
"connect_time_us":0,
"namelookup_time_us":0,
"pretransfer_time_us":0,
"redirect_time_us":0,
"starttransfer_time_us":0,
"total_time_us":5286024
}