Привет , есть такой код .
<?
ini_set('max_execution_time', 900);
$start = microtime(true);
function multiRequest($data, $options = array()) {
// array of curl handles
$curly = array();
// data to be returned
$result = array();
// multi handle
$mh = curl_multi_init();
// loop through $data and create curl handles
// then add them to the multi-handle
foreach ($data as $id => $d) {
$curly[$id] = curl_init();
$url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
curl_setopt($curly[$id], CURLOPT_URL, $url);
curl_setopt($curly[$id], CURLOPT_HEADER, 0);
curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
// post?
if (is_array($d)) {
if (!empty($d['post'])) {
curl_setopt($curly[$id], CURLOPT_POST, 1);
curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);
}
}
// extra options?
if (!empty($options)) {
curl_setopt_array($curly[$id], $options);
}
curl_multi_add_handle($mh, $curly[$id]);
}
// execute the handles
$running = null;
do {
curl_multi_exec($mh, $running);
} while($running > 0);
// get content and remove handles
foreach($curly as $id => $c) {
$result[$id] = curl_multi_getcontent($c);
curl_multi_remove_handle($mh, $c);
}
// all done
curl_multi_close($mh);
return $result;
}
for ($i = 3000000 ; $i <= 3000040; $i++) {
$next = 'https:/example.ru/tr/'.$i;
$data[$i] = $next;
}
$r = multiRequest($data);
$kr = count($r) + 3000000;
for ($b = 3000000 ; $b <= $kr; $b++){
if (strpos($r[$b], 'window.trackErrorPage') !== false)
{
$inexistente [] = $b;
}
else {
$existente [] = $b;
}
}
$tm = microtime(true) - $start;
echo $tm;
echo "<hr>";
echo "True ".count($existente);
echo "<hr>";
echo "False = ".count($inexistente);
?>
как видите всё начинается с 3M до 3000040 , всё работает но если задавать от 3М до 3005040 может сработать , может вывести 505 error . Сразу попробовал 10к итераций сработало , решил сделать повторно и уже на работает .
Всё это происходит на VPS 1гб оперативки , Debian x86 .
php-memory-limit - > local value 512M (было 128 поставил сам 512) , Master Value 128M
Проблема в том что это слишком большая нагрузка ?
Не достаточно оперативки ?
Если после каждой итераций сделать sleep(1) это снизит нагрузку ?