php - PING - 使用PHP ping一個IP地址並回顯結果

69 5

我有以下功能,但目前無法工作,我想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")



echo結果總是''dead'' - 無論我怎麼做。

可以幫我看看哪兒出錯了?有更好的方法來實現同樣的結果嗎?

多謝。

时间: 原作者:

107 3

注意:下面的解決方案在Windows上不起作用。 在Linux上,從控制台發出"ping "命令,並設置命令路徑(所建議的exec調用),


<?php


function pingAddress($ip) {


 $pingresult = exec("/bin/ping -n 3 $ip", $outcome, $status);


 if (0 == $status) {


 $status = "alive";


 } else {


 $status = "dead";


 }


 echo "The IP address, $ip, is ".$status;


}



pingAddress("127.0.0.1");



原作者:
58 0

這在我這裡工作的很好。 。


$host="127.0.0.1";


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



echo "<pre>$output</pre>"; //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";


}



原作者:
125 1

我已經在Windows和Linux開發了用於異構操作系統的演算法 。

實現以下類:


<?php



 class CheckDevice {



 public function myOS(){


 if (strtoupper(substr(PHP_OS, 0, 3)) === (chr(87).chr(73).chr(78)))


 return true;



 return false;


 }



 public function ping($ip_addr){


 if ($this->myOS()){


 if (!exec("ping -n 1 -w 1 ".$ip_addr." 2>NUL > NUL && (echo 0) || (echo 1)"))


 return true;


 } else {


 if (!exec("ping -q -c1 ".$ip_addr." >/dev/null 2>&1 ; echo $?"))


 return true;


 }



 return false;


 }


 }



 $ip_addr = "151.101.193.69"; #DNS: www.stackoverflow.com



 if ((new CheckDevice())->ping($ip_addr))


 echo "The device exists";


 else 


 echo "The device is not connected";



原作者:
134 0

對於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.';


}



https://github.com/geerlingguy/Ping

原作者:
74 2

使用主機名,反向IP (用於內部網路)和IP可以正常工作。


function pingAddress($ip) {


 $ping = exec("ping -n 2 $ip", $output, $status);


 if (strpos($output[2], 'unreachable') !== FALSE) {


 return '<span style="color:#f00;">OFFLINE</span>';


 } else {


 return '<span style="color:green;">ONLINE</span>';


 }


}



echo pingAddress($ip);



原作者:
129 1

我使用這個函數:


<?php


function is_ping_address($ip) {


 exec('ping -c1 -w1 '.$ip, $outcome, $status);


 preg_match('/([0-9]+)% packet loss/', $outcome[3], $arr);


 return ( $arr[1] == 100 ) ? false : true;


}



原作者:
...