У меня есть числовой массив php, который включает в себя более 1000 внешних ссылок. Не могли бы вы помочь мне разобраться с функцией PHP или JS, которая будет проходить по каждой ссылке и проверять, работает она или нет? Чтобы создать массив и включить ссылки, которые больше не работают.
Сейчас я использую этот код:
$links = array(
'http://google.com',
'http://example.com',
'http://awkrlalrno1in01n2rn12r12r.com',
'http://112om1om1om.ru'
);
foreach($links as $link) {
if($file_headers = @get_headers($link)) {
if(strpos($file_headers[0],'404') !== false) {
$toDeleteLinks[] = $link;
}
}elseif($handle = curl_init($link)) {
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
//Get the HTML or whatever is linked in $url.
$response = curl_exec($handle);
//Check for 404 (file not found).
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 0) {
$toDeleteLinks[] = $link;
}
curl_close($handle);
}
}
if(isset($toDeleteLinks)) {
echo '<pre>';
print_r($toDeleteLinks);
echo '</pre>';
}
но он выдает 500 Internal Server Error. Кажется, что сервер не может обработать так много запросов, так как я попытался создать массив с 4 ссылками, 2 — правильными ссылками, 2 — неправильными, и функция работает как шарм.
Я собираюсь вытащить мой слух из моей головы, поэтому, пожалуйста, помогите: D Заранее спасибо!
Задача ещё не решена.
Других решений пока нет …