获取站点状态 - 向上或向下

joH*_*oHN 10 php web

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

我正在使用上面的程序来获取网站的状态.但我总是得到一个离线消息.代码有什么错误吗?

Sta*_*arx 26

卷曲解决方案怎么样?

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"; }
Run Code Online (Sandbox Code Playgroud)


ste*_*ewe 21

主机名不包含http://,这只是URI的方案.

删除它并试试这个:

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


One*_*ood 6

我知道这是一篇旧文章,但您也可以解析以下内容的输出:

$header_check = get_headers("http://www.google.com");
$response_code = $header_check[0];
Run Code Online (Sandbox Code Playgroud)

这将为您提供完整的 HTTP 状态。