Eigene PING funktion mit Rückgabe der Millisekunden

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.