查看服务器是否正在侦听PHP中的端口?
在回答之前,请注意我对PHP完全陌生。我听说它很强大 我想做的是在我的(Apache2)web服务器上有一个页面,当用户单击页面上的按钮时,服务器将检查端口是否在其自己的IP上运行,每个按钮都有一个预设端口,我希望对具有相同IP但不同端口的多个按钮进行ping 例如:查看服务器是否正在侦听PHP中的端口?,php,apache,port,Php,Apache,Port,在回答之前,请注意我对PHP完全陌生。我听说它很强大 我想做的是在我的(Apache2)web服务器上有一个页面,当用户单击页面上的按钮时,服务器将检查端口是否在其自己的IP上运行,每个按钮都有一个预设端口,我希望对具有相同IP但不同端口的多个按钮进行ping 例如: 单击按钮1(Terraria服务器),服务器ping 127.0.0.1:7777并告知用户是否收到响应 点击按钮2(Minecraft服务器),服务器Ping 127.0.0.1:25565并告知用户等 我已经安装了PHP并
- 单击按钮1(Terraria服务器),服务器ping 127.0.0.1:7777并告知用户是否收到响应
- 点击按钮2(Minecraft服务器),服务器Ping 127.0.0.1:25565并告知用户等
我已经安装了PHP并正在运行,我只需要一些代码:)尝试在端口上建立连接并返回结果:
<?php
function Connect($port) {
$serverConn = @stream_socket_client("tcp://127.0.0.1:{$port}", $errno, $errstr);
if ($errstr != '') {
return false;
}
fclose($serverConn);
return true;
}
if(isset($_POST['portTest'])){
switch ($_POST['portTest']){
case 'minecraft': $port= '25565';
break;
case 'Terraria': $port= '7777';
break;
default: exit;
}
if (Connect($port)){
echo "Server is running!";
}else{
echo "Server is down";
}
}
?>
<form method="POST">
<input type="submit" name="portTest" value="minecraft">
<input type="submit" name="portTest" value="Terraria">
</form>
在端口上打开一个套接字(谷歌上有数以十亿计的搜索结果),如果你能打开套接字,你就知道端口正在运行。请注意,如果你做得太多,某些服务(如IMAP IIRC)会禁止你(“为什么这个IP开始与我对话,什么也不说?!”)@H2Ooooooooo我正在我的家庭计算机上运行服务器,我不希望有太多流量,所以这就是为什么。我将使用它在不同的端口上ping自身。不是另一台服务器。它完全是本地的。嗨,谢谢你的回答,它按照我想要的方式工作:D我只是想问,有没有办法缩短超时时间?我找不到一个明显的方法。只是如果服务器关闭,页面将刷新15-20秒,这不是很好。是的,第四个参数是超时,所以@stream\u socket\u client(“tcp://127.0.0.1:$port“,$errno,$errstr,5)代码>将提供5秒超时