0

我正在尝试实现一个 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');
}

?>

如何在我的页面上复制类似的内容?

4

1 回答 1

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 上的连接。它不会做任何事情来验证侦听此端口的应用程序实际上是您正在寻找的应用程序,或者它是否正常运行。

于 2012-08-14T16:42:03.110 回答