Как проверить работоспособность удаленного сервера

elven

Новичок
Как проверить работоспособность удаленного сервера

Задавал свой вопрос здесь, но админы уже закрыли тему, а ответа так я и не получил. Приведенные ответы не помогли.

У меня такая ситуация: у меня через функцию file_get_contents берется информация из другого сайта.

PHP:
$file=file_get_contents("http://адрес.ru");

когда сайт не работает у меня на странице выдает ошибку:


PHP:
Warning: file_get_contents([url]http://адрес.ru[/url] ) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /hosting/***/***.php on line 24

Как правильно сделать предварительную проверку? Чтобы если этот сайт не доступен переменной $file присвоить текст "Offline"?

Ответы были:

PHP:
if (file_exists("http://адрес.ru")==true) 
$file=file_get_contents("http://адрес.ru");
else
$file='offline';


PHP:
if (file_exists($fn = 'http://адрес.ru')) 
{ 
  $file = file_get_contents($fn); 
} 
else 
{ 
  $file = 'Offline'; 
}

Они не работают. Разве через file_exists можно проверять файлы на удаленном серваке?
В инете прочитал, что можно пробовать через команду fsockopen(). Попробовал, но мой сервак руганулся.

Каким образом можно проверить статус удаленного сайта (работает или не работает)?
P.S. Специально для "Фанат", отвечаю на твое сообщение "информацию надо брать со своего сайта. а не с чужого. ": ничего портивоправного, просто для удобства посетителей, я у себя дублирую статус сервера игры. Для этого я копирую страничку с веб-сайта этого игрового сервера, на котором есть информация о текущем статусе сервера и вылавливаю статус сервера.
Иногда когда падает сервак игры, также падает и сайт. И тогда мой сайт начинается ругаться :)
 

SiMM

Новичок
> Разве через file_exists можно проверять файлы на удаленном серваке?
[m]file_exists[/m]

> Попробовал, но мой сервак руганулся.
Исправь ошибку - ругаться перестанет.
 

elven

Новичок
Там написано, что file_exists поддерживате проверку только на локальном сервере, а не на удаленном.

-~{}~ 04.04.06 17:51:

Кстати спасибо я там в комментах нашел способ:

Вот он
PHP:
<?php
   function url_exists($url) {
       $a_url = parse_url($url);
       if (!isset($a_url['port'])) $a_url['port'] = 80;
       $errno = 0;
       $errstr = '';
       $timeout = 30;
       if(isset($a_url['host']) && $a_url['host']!=gethostbyname($a_url['host'])){
           $fid = fsockopen($a_url['host'], $a_url['port'], $errno, $errstr, $timeout);
           if (!$fid) return false;
           $page = isset($a_url['path'])  ?$a_url['path']:'';
           $page .= isset($a_url['query'])?'?'.$a_url['query']:'';
           fputs($fid, 'HEAD '.$page.' HTTP/1.0'."\r\n".'Host: '.$a_url['host']."\r\n\r\n");
           $head = fread($fid, 4096);
           fclose($fid);
           return preg_match('#^HTTP/.*\s+[200|302]+\s#i', $head);
       } else {
           return false;
       }
   }
?>
Спасибо.
 

ybilevych

Новичок
[m]file_get_contents[/m] возвращает false в случае неудачи
Попробуй так:
PHP:
if(false !== ($string = file_get_contents($addr)) {
 //on success
} else {
 //on failure
}
 
Сверху