Если я не ошибаюсь, ни одна из встроенных функций php не возвращает http-статус удаленного URL-адреса, поэтому лучшим вариантом будет использование сокетов для открытия соединения с сервером, отправки запроса и анализа состояния ответа:
псевдокод:
parse url => $host, $port, $path
$http_request = "GET $path HTTP/1.0\nHhost: $host\n\n";
$fp = fsockopen($host, $port, $errno, $errstr, $timeout), check for any errors
fwrite($fp, $request)
while (!feof($fp)) {
$headers .= fgets($fp, 4096);
$status = <parse $headers >
if (<status read>)
break;
}
fclose($fp)
Другой вариант - использовать уже построенный клиентский класс http в php, который может возвращать заголовки без извлечения полного содержимого страницы, в сети должно быть несколько классов с открытым исходным кодом ...