PHP Ping
Před časem jsem řešil jak na ping nezávisle na platformě. Ano, vím, že Linux, Mac i Windows mají nativní ping, ale liší se parametry a ne vždy jde využít na každém hostingu. Proto jsem hledal alternativu, která využívá socket. function ping ( $host , $timeout = 1 ) { /*…
Před časem jsem řešil jak na ping nezávisle na platformě. Ano, vím, že Linux, Mac i Windows mají nativní ping, ale liší se parametry a ne vždy jde využít na každém hostingu.
Proto jsem hledal alternativu, která využívá socket.
function ping($host, $timeout = 1) {
/* ICMP ping packet with a pre-calculated checksum */
$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
$socket = socket_create(AF_INET, SOCK_RAW, 1);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
socket_connect($socket, $host, null);
$ts = microtime(true);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255)) {
$result = microtime(true) - $ts;
} else {
$result = false;
}
socket_close($socket);
if ($result)
return round(($result * 1000), 0)." ms".PHP_EOL;;
else
return "down".PHP_EOL;
}
for ($a = 0;$a < 10000 ;$a++ ) {
print ping( "seznam.cz" );
}
Diskuse
Zatím tu nikdo nediskutuje.
Napsat příspěvek
Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.