我正在尝试实现一个PHP脚本,该脚本将ping特定端口上的IP并回显服务器是否在线/离线。这样,用户将能够查看对服务器的非访问是服务器故障还是自身网络问题。
该网站目前位于http://Dev.stevehamber.com。您可以看到“在线”包含在一个“PHP”类中,我需要这个来反映服务器是在线还是离线。应用程序在端口TCP = 25565上运行,因此我需要输出来显示此端口是否可访问。
这是我发现的一个片段(我想)我正在寻找的东西:
<?php
$host = 'www.example.com';
$up = ping($host);
// if site is up, send them to the site.
if( $up ) {
header('Location: http://'.$host);
}
// otherwise, take them to another one of our sites and show them a descriptive message
else {
header('Location: http://www.anothersite.com/some_message');
}
?>
如何在我的页面上复制这样的内容?
答案 0 :(得分:4)
根据对该问题的评论,fsockopen()
是完成此任务的最简单,最广泛的方式。
<?php
// Host name or IP to check
$host = 'www.example.com';
// Number of seconds to wait for a response from remote host
$timeout = 2;
// TCP port to connect to
$port = 25565;
// Try and connect
if ($sock = fsockopen($host, $port, $errNo, $errStr, $timeout)) {
// Connected successfully
$up = TRUE;
fclose($sock); // Drop connection immediately for tidiness
} else {
// Connection failed
$up = FALSE;
}
// Display something
if ($up) {
echo "The server at $host:$port is up and running :-D";
} else {
echo "I couldn't connect to the server at $host:$port within $timeout seconds :-(<br>\nThe error I got was $errNo: $errStr";
}
请注意,所有这一切都是测试服务器是否接受TCP上的连接:25565。它无法验证侦听此端口的应用程序实际上是您正在查找的应用程序,或者它是否正常运行。