php
  • ping
  • 2013-03-05 54 views 1 likes 
    1

    我一直有問題,我一直在篡改腳本。在沒有端口的php中ping服務器?

    我想爲我的遊戲服務器做一個在線檢查器,所以我可以指出我的服務器是在線還是從我的網站下來。這是我的代碼:

    <?php 
    if (!$socket = @fsockopen(IP, Port, $errno, $errstr, 2)) 
    { 
        echo "<center><img style='float:left;' src='images/offline_icon.png'><font style='float:left;' size='5' color='red'><strong>Offline!</strong></font></center>"; 
    } 
    else 
    { 
        echo "<center><img style='float:left;' src='images/online_icon.png'><font style='float:left;' size='5' color='green'><strong>Online!</strong></font></center>"; 
        fclose($socket); 
    } 
    ?> 
    

    我的問題是,它失敗。如果我將超時設置爲30,則會等待30秒,然後將其標記爲脫機並繼續。

    如果我在終端上ping IP,它工作得很好。

    在搜索關於ping和端口後,它似乎可能是問題。

    有沒有辦法在沒有端口的IP上執行普通ping?像linux命令行一樣?

    +0

    遊戲服務器是否也運行網絡服務器?如果是這樣,你可以使用一個小的HTML文件來確定它是否存在嗎? 'file_get_contents('http://www.example.com/alive.html');'它在失敗時返回false。 – mkaatman 2013-03-05 19:19:13

    +0

    遊戲服務器遠程託管。我已經知道這是可能的: – 2013-03-05 19:19:48

    +0

    嘗試使用端口80,這是'http://使用的端口 – 2013-03-05 19:20:28

    回答

    3

    ICMP不使用端口。

    您可能想用exec()來ping服務器。退房:Pinging an IP address using PHP and echoing the result

    +0

    謝謝,這工作:) – 2013-03-05 19:26:36

    相關問題