php如何能在1~2s左右判断线上服务器是否开启(宕机)?

查看:99
本文介绍了php如何能在1~2s左右判断线上服务器是否开启(宕机)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

想了两种解决方式都不太理想:
第一种是尝试远程链接线上数据库来判断
第二种是curl请求线上服务器的一个接口,
但是这两种方式,等待回应的时间过长,请问如何在1~2s时间内判断线上服务器是否宕机(开启)?

(判断完之后,根据结果进行相应的操作,进行后续操作的时候,需要先判断服务器是否开启。)

解决方案

可以用fsockopen

$ip = '192.168.1.1';
$port = 80;
$timeout = 2;
$sock = @fsockopen($ip, $port, $errno, $errmsg, $timeout);
if($sock) {
   //todo: server is online
}else {
   //todo: server is offline
}

防止意外的超时,可以做个循环

$count = 3; //尝试次数
$flag = false; //状态标记
$ip = '192.168.1.1';
$port = 80;
$timeout = 2;
while($count--) {
    $sock = @fsockopen($ip, $port, $errno, $errmsg, $timeout);
    if($sock) {
        fclose($sock);
        $flag = true;
        break;
    }
}

if ($flag) {
    //你的业务逻辑
} else {
    echo "$errmsg ($errno)<br />" . PHP_EOL;
}

这篇关于php如何能在1~2s左右判断线上服务器是否开启(宕机)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆