<?php $host = 'http://google.com'; if($socket =@ fsockopen($host, 80, $errno, $errstr, 30)) { echo 'online!'; fclose($socket); } else { echo 'offline.'; ?>
Я использую вышеуказанную программу, чтобы получить статус сайта. Но я всегда получаю сообщение в автономном режиме. Есть ли ошибка с кодом?
Имя хоста не содержит 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)) { ...
но завиток будет лучше