In questo articolo vedremo come verificare se una porta di un host remoto è aperta con PHP.
La soluzione è la seguente:
function check_if_port_is_open($host, $port, $timeout) {
$connection = @fsockopen($host, $port, $errno, $errstr, $timeout);
if (is_resource($connection)) {
fclose($connection);
return true;
}
return false;
}
La funzione inizia aprendo una connessione tramite la funzione fsockopen()
. Questa funzione crea una connessione di rete a un indirizzo specificato, utilizzando un protocollo specificato (in questo caso, il protocollo TCP/IP). Il simbolo @
all'inizio della chiamata a fsockopen()
viene utilizzato per sopprimere gli eventuali messaggi di errore generati dalla funzione.
Se la connessione viene stabilita con successo, la funzione fsockopen()
restituirà una resource (risorsa), che è un tipo di dato speciale in PHP utilizzato per rappresentare risorse esterne come file, connessioni di rete o altre entità. In questo caso, la risorsa rappresenta la connessione di rete stabilita.
La funzione successivamente verifica se la risorsa della connessione è un oggetto valido utilizzando la funzione is_resource()
. Se la risorsa è valida, significa che la connessione è stata stabilita correttamente e la porta è aperta. Pertanto, la funzione chiude la connessione utilizzando la funzione fclose()
per liberare le risorse e restituisce true
per indicare che la porta è aperta.
Se la connessione non viene stabilita correttamente o la risorsa non è valida, la funzione restituisce false
per indicare che la porta è chiusa.