PHP检查网站在线或离线问题

PHP检查网站在线或离线问题,php,Php,这用于检查网站是否在线: <?php $host = 'http://jdfhgjfdhjanmczxmcnaushdfjsa.com'; if($socket =@ fsockopen($host, 80, $errno, $errstr, 30)) { echo 'true'; fclose($socket); }else{ echo 'false'; } 第二个代码不起作用的原因是您没有正确访问主机 改变 if($socket = @fsockopen($

这用于检查网站是否在线:

<?php
$host = 'http://jdfhgjfdhjanmczxmcnaushdfjsa.com';
if($socket =@ fsockopen($host, 80, $errno, $errstr, 30)) {
        echo 'true';
fclose($socket);
}else{
    echo 'false';

}

第二个代码不起作用的原因是您没有正确访问主机

改变

if($socket = @fsockopen($host[$i]...)

您不需要
$i
索引。你可以把它全部扔掉

附录

您在第一次发布时注意到,在循环中调用不起作用,但调用一个域起作用。上面的修复是您原始问题的解决方案。您面临的是另一个问题:您错过了它,因为您在函数调用之前添加了错误抑制操作符
@
。删除它会显示问题:

出于安全原因,已禁用fsockopen()


在线沙盒禁用
fsockopen
,因此您不能依赖其输出来确定该代码是否有效。顺便说一句,使用错误抑制是个坏主意,尤其是在开发中。

您将forforeach循环结合在一起,如果您使用foreach,您根本不需要担心
$i
变量。在本例中,您通过
$i
索引检查hosts数组,但基于
$host
变量进行报告,这可能会让人感到困惑

以下对我来说是可行的:

<?php
$hosts = array();
$hosts[] = 'jdfhgjfdhjanmczxmcnaushdfjsa.com';
$hosts[] = 'google.co.il';

foreach($hosts as $host){
    if($socket =@ fsockopen($host, 80, $errno, $errstr, 30)) {
        echo 'true';
        fclose($socket);
    }
    else {
        echo $host.' false';
    }
}
试试:



尝试使用谷歌寻找解决方案。这段代码对我很有用,我在

上找到了它。你应该将代码粘贴到这里,以便以后的用户可以从你的错误中吸取教训,即使你的链接失效。不,这不是问题,我已经更新了代码。。请参见示例2。您看到了旧链接,因为每个人每2秒编辑一次我的问题。您正在混合问题。我解决了你最初的问题。看看我在回答中添加了什么。不,这不是问题所在,我已经更新了代码。。参见示例2。您看到的是旧链接,因为每个人每2秒钟编辑一次我的问题。当您说“这不是问题”时,您指的是哪一位?您的示例2仍然混合了这两种循环类型,我的答案的最后一部分解释了为什么这种代码很少在沙箱中工作。我在这里发布的内容效果很好。请再次阅读,转到示例2,没有混合循环。仍然不能使用多个URL,并且它不能工作,请检查沙盒,它们都是错误的。请阅读我的评论和我答案中的最后一句话。该沙箱与大多数其他沙箱一样,不支持
fsockopen
函数-无论您使用什么URL,它总是返回false。@Rovog您可以创建一个数组并多次调用该函数,例如:
$list=array(“site”、“site2”、“site3”);foreach($sites的列表){if(Visit($sites)){echo“Website OK”,“n”;}else{echo“Website DOWN”;}
Oh OK。说你尝试了多个URL而不是foreach。我的坏处是,当其中一个是错误的时候,它保持所有的真实。如果我一个接一个地尝试,而不是在里面尝试,它的效果会很好。
if($socket = @fsockopen($host...)
<?php
$hosts = array();
$hosts[] = 'jdfhgjfdhjanmczxmcnaushdfjsa.com';
$hosts[] = 'google.co.il';

foreach($hosts as $host){
    if($socket =@ fsockopen($host, 80, $errno, $errstr, 30)) {
        echo 'true';
        fclose($socket);
    }
    else {
        echo $host.' false';
    }
}
    <?php
function Visit($url){
       $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";$ch=curl_init();
       curl_setopt ($ch, CURLOPT_URL,$url );
       curl_setopt($ch, CURLOPT_USERAGENT, $agent);
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt ($ch,CURLOPT_VERBOSE,false);
       curl_setopt($ch, CURLOPT_TIMEOUT, 5);
       curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
       curl_setopt($ch,CURLOPT_SSLVERSION,3);
       curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
       $page=curl_exec($ch);
       //echo curl_error($ch);
       $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
       curl_close($ch);
       if($httpcode>=200 && $httpcode<300) return true;
       else return false;
}
if (Visit("http://www.google.com"))
       echo "Website OK"."n";
else
       echo "Website DOWN";
?>