php如何能在1~2s左右判断线上服务器是否开启(宕机)?
本文介绍了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屋!
查看全文