Přeskočit na obsah
lurycz Blog programátora
PHP čtení 1 min upraveno 28. 8. 2026

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.

Nezveřejňuje se, slouží jen k ověření.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.