Добрый день. Есть код, который забирает код ответа сервера. При выполнении его по рабочей ссылке выдает нужный ответ, при выполнении по нерабочей вместо ответа отваливается по таймауту.
как мне его заставить выдавать ответ, если страница ничего не отдает в течении 20 секунд например?
set_timeout и max_execution_time не фунциклирует.
<?php
$url='http://example.com';
$code=get_headers($url);
if ($code[0]="HTTP/1.1 200 OK")
{
echo "200";
} else {
echo "shit";
}
?>
Необходимо для мониторинга страниц по доступности http, т.к. пинг не всегда дает корректную информацию (на некоторых машинах закрыт ICMP, некоторые пингуются но веб-сервер лежит)
UPD
Получилось! Рабочий код для информации:
<?php
$url = "http://example.com";
$ch = curl_init( $url );
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_CONNECTTIMEOUT => 20,
CURLOPT_TIMEOUT => 20,
CURLOPT_NOBODY => 1
);
curl_setopt_array( $ch, $options );
curl_exec($ch);
$http = curl_getinfo($ch);
echo $http['http_code'];
curl_close($ch);
?>