domenica 27 Settembre 2020

Download in corso

Softwareone.it

10-01-2019

PING Packet Internet Grouper in PHP con fsockopen ()

Un Ping è prettamente utilizzato per verificare la presenza e la raggiungibilità di un altro computer connesso in rete e per misurare le latenze di trasmissione di rete.

Pubblicità

Per stabilire una connessione con un determinato server esterno PHP ci da la possibilità di utilizzare fsockopen().

Quello che fa fsockopen() è avviare una connessione socket alla risorsa specificata dal bersaglio server to server.

fsockopen ($domain, 80, $errno, $errstr, 10);

Restituisce un puntatore a file che può essere utilizzato insieme alle altre funzioni di file come fgets() , fgetss() , fwrite() , fclose() , e feof().

Se la chiamata non riesce, viene restituito FALSE e se gli opzionali errno e errstr argomenti sono presenti, vengono impostati per indicare l’effettivo errore di sistema che si è verificato nel livello di sistema connect() chiamata.

A seconda dell’ambiente, il dominio Unix o il timeout di connessione opzionali potrebbero non essere disponibili.

PING è acronimo di Packet Internet Grouper consiste in un programma utilizzato per misurare il ritardo di trasmissione dati delle connessioni a Internet da postazione fissa, vale a dire il tempo necessario per trasmettere dati di piccole dimensioni verso la destinazione, espresso in millisecondi (ms).

Esempio di connessione con fsockopen()

$fp = fsockopen("www.example.it", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
 
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}

Creaiamo un piccolo form per l’inserimento del dominio che ci interessa verificare lo stato UP – DOWN:

 <?php
// Calcolo del tempo di risposta
function pingDomain($domain) {
  $starttime = microtime(true);
  $sock      = @fsockopen ($domain, 80, $errno, $errstr, 10);
  $stoptime  = microtime(true);
  $status    = 0;
 
  if (!$sock) $status = -1;  // Sito down o sconosciuto
  else {
    fclose($sock);
    $status = ($stoptime - $starttime) * 1000;
    $status = floor($status);
  }
  return $status;
}
?>
 
<html>
<body>
  <form action="?php $PHP_SELF ?>" method="post" name="domain">
    <table cellpadding='4' cellspacing='0' border='0'>
      <tr><td>Nome del dominio:</td>
          <td><input name="domainname" type="text" size=30 ></td>
          <td><input type="submit" name="submitBtn" value="Ping"></td>
      </tr>
    </table>
  </form>
 
<?php
// Verifica sul pulsante Ping
if (isset($_POST['submitBtn'])){
  $domainbase = (isset($_POST['domainname'])) ? $_POST['domainname'] : '';
  $domainbase = str_replace("http://","",strtolower($domainbase));
  $status = pingDomain($domainbase);
  if ($status != -1)
    echo "http://$domainbase<br/>stato = <font color='green'>ONLINE</font><br/>ping = $status ms";
  else
    echo "http://$domainbase<br>stato = <font color='red'>OFFLINE<br/> Controlla Nome Dominio: </font>";
     
}
?>
</body>
</html>

Risultato


https://www.php.net/manual/en/function.fsockopen.php

I commenti sono chiusi.

Pubblicità