Получить статус сайта – вверх или вниз

<?php $host = 'http://google.com'; if($socket =@ fsockopen($host, 80, $errno, $errstr, 30)) { echo 'online!'; fclose($socket); } else { echo 'offline.'; ?> 

Я использую вышеуказанную программу, чтобы получить статус сайта. Но я всегда получаю сообщение в автономном режиме. Есть ли ошибка с кодом?

Related of "Получить статус сайта – вверх или вниз"

Имя хоста не содержит http:// , это только схема для URI.

Удалите его и попробуйте:

 <?php $host = 'google.com'; if($socket =@ fsockopen($host, 80, $errno, $errstr, 30)) { echo 'online!'; fclose($socket); } else { echo 'offline.'; } ?> 

Как насчет решения для завитки?

 function checkOnline($domain) { $curlInit = curl_init($domain); curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10); curl_setopt($curlInit,CURLOPT_HEADER,true); curl_setopt($curlInit,CURLOPT_NOBODY,true); curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true); //get answer $response = curl_exec($curlInit); curl_close($curlInit); if ($response) return true; return false; } if(checkOnline('http://google.com')) { echo "yes"; } 

Это может работать быстрее

 <?php $domain = '5wic.com'; if(gethostbyname($domain) != $domain ) { echo "Up"; } else { echo "Down"; } ?> 

Я знаю, что это старый пост, но вы также можете проанализировать вывод:

 $header_check = get_headers("http://www.google.com"); $response_code = $header_check[0]; 

Это даст вам полный статус HTTP.

должно быть

 if(fsockopen($host, 80, $errno, $errstr, 30)) { ... 

не

 if($socket =@ fsockopen($host, 80, $errno, $errstr, 30)) { ... 

но завиток будет лучше