Der Unterschied zu Sys_Ping ist
Diese Funktion liefert bei Erfolg die benötigte Laufzeit in Millisekunden als float Wert oder false wenn der Host nicht erreichbar ist.
function ping($host, $timeout = 500) {
$socket = socket_create(AF_INET, SOCK_RAW, 1);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' =>0, 'usec' => $timeout * 1000));
if(!socket_connect($socket, $host, null))return false;
$ts = microtime(true);
$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
socket_send($socket, $package, strLen($package), 0);
if (@socket_read($socket, 255)) {
$result = round( (microtime(true) - $ts)*1000 , 3);
} else {
$result = false;
}
socket_close($socket);
return $result;
}
// unbekannte IP
$r = ping('8.8.8.114',50);
var_export($r);
// Google DNS Server IP
$r = ping('8.8.8.8');
echo "
$r ms";
Xaver.