天天看點

php ping 域名,使用PHP Ping一個IP位址并回顯結果

使用PHP Ping一個IP位址并回顯結果

我有以下function,我不工作到目前為止。 我想ping一個IP位址,然後回顯IP是否存活。

function pingAddress($ip){ $pingresult = shell_exec("start /b ping $ip -n 1"); $dead = "Request timed out."; $deadoralive = strpos($dead, $pingresult); if ($deadoralive == false){ echo "The IP address, $ip, is dead"; } else { echo "The IP address, $ip, is alive"; } }

當我用這個例子調用這個函數時:

pingAddress("127.0.0.1")

回聲結果總是“死” – 無論如何。

有人可以幫我,我哪裡錯了? 和/或有沒有更好的方法做這個結果相同?

非常感謝。

更新:修改了代碼以包含雙引号,但仍然得到相同(不正确)的結果。

注意:下面的解決scheme不适用于Windows。 在linux上,從控制台執行“哪個ping”指令,并相應地設定指令path(build議的exec調用)

我想你想檢查指令的退出狀态,而shell_exec給你完整的輸出(可能是危險的應該指令輸出從指令版本更改為版本由于某種原因)。 而且你的variables$ ip不能在單引号内解釋。 你必須使用雙重的“”。 這可能是您需要修複才能使其工作的唯一的事情。

但我認為下面的代碼可以更“便攜”。 恕我直言,它實際上是捕獲退出狀态,而不是試圖parsing結果string更好。 恕我直言,指定ping指令的完整path也更好。

這在Wordpress中也不适用于我。 我也嘗試了-t和-n等方式,但是沒有成功。 我用了,

function pingAddress($ip) { $pingresult = exec("/bin/ping -c2 -w2 $ip", $outcome, $status); if ($status==0) { $status = "alive"; } else { $status = "dead"; } $message .= '

'; $message .= ' The IP address, '.$ip.', is '.$status.'

那麼我想修改這個,因為它在我的本地主機上正常工作,而不是在我的現場伺服器上。對于現場伺服器,我得到了另一個現在适用于本地和現場的東西。

$fp = fSockOpen($ip,80,$errno,$errstr,1); if($fp) { $status=0; fclose($fp); } else { $status=1; }

然後我顯示伺服器是為0和為1。

這對我來說是完美的。 我從Ping網站得到這個結果,并傳回PHP Thanks @ karim79

對于Windows使用這個類

$host = 'www.example.com'; $ping = new Ping($host); $latency = $ping->ping(); if ($latency !== false) { print 'Latency is ' . $latency . ' ms'; } else { print 'Host could not be reached.'; }

這适用于主機名,反向IP(用于内部networking)和IP。

function pingAddress($ip) { $ping = exec("ping -n 2 $ip", $output, $status); if (strpos($output[2], 'unreachable') !== FALSE) { return 'OFFLINE'; } else { return 'ONLINE'; } } echo pingAddress($ip);

這對我來說很好

$host="127.0.0.1"; $output=shell_exec('ping -n 1 '.$host); echo "

$output      

"; //for viewing the ping result, if not need it just remove it if (strpos($output, 'out') !== false) { echo "Dead"; } elseif(strpos($output, 'expired') !== false) { echo "Network Error"; } elseif(strpos($output, 'data') !== false) { echo "Alive"; } else { echo "Unknown Error"; }

我使用這個function: