Здравствуйте. Я вот гружу данные с ряда сайтов через curl_multi.
В нем есть один сайт, который постоянно зависает, раз через раз. То есть долго отдает данные. Из за этого, тормозится весь процесс загрузки всех остальных данных в потоке.
Вот мой код:
$urls = array(
'site1' => 'siteurl1',
'site2' => 'siteurl2'
);
$useragent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36';
$timeout= 10;
$dir = dirname(__FILE__);
$cookie_file = $dir . '/' . md5($_SERVER['REMOTE_ADDR']) . '.txt';
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($conn[$i], CURLOPT_HEADER, 0);
curl_setopt($conn[$i], CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($conn[$i], CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($conn[$i], CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($conn[$i], CURLOPT_USERAGENT, $useragent);
curl_multi_add_handle($mh, $conn[$i]);
}
do {
$status = curl_multi_exec($mh, $active);
if ($active) {
curl_multi_select($mh);
}
while (false !== ($info = curl_multi_info_read($mh))) {
//var_dump($info);
}
} while ($active && $status == CURLM_OK);
foreach ($urls as $i => $url) {
$res[$i] = curl_multi_getcontent($conn[$i]);
curl_close($conn[$i]);
}
foreach ($res as $key =>$value ) {
file_put_contents('data/'.$key.'_list.json', $res[$key]);
}
Вопрос, как сделать проверку, чтобы если один из сайтов грузится более 1 секунды, он пропускался?