Può capitare di dover sviluppare una Web application il cui scopo sia di produrre un determinato comportamento sulla base della disponibilità di un servizio; un esempio potrebbe essere quello di uno script PHP che debba leggere il markup di una pagina Internet dopo aver verificato la raggiungibilità del sito Web che la contiene. L'oggetto di questo post sarà proprio la creazione di uno script in che possa effettuare tale verifica.
Una semplice funzione in grado di accettare come parametro un nome a dominio all'interno di una URL sottoposta a filtro di validazione potrebbe essere la seguente:
function controllaDominio($nome_dominio) { # controllo di validità sull'URL if(!filter_var($nome_dominio, FILTER_VALIDATE_URL)) { return false; } # inizializzazione della sessione cURL $curl = curl_init($nome_dominio); curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10); curl_setopt($curl,CURLOPT_HEADER,true); curl_setopt($curl,CURLOPT_NOBODY,true); curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); # esecuzione della sessione $output = curl_exec($curl); # chiusura della sessione curl_close($curl); # controllo sul risultato della chiamata if ($output) { return true; }else{ return false; } }
La funzione proposta dovrà essere utilizzata in questo modo (naturalmente potrete passare come argomento l'URL di un qualsiasi altro sito Web):
if(controllaDominio('http://www.claudiogarau.it')) { echo 'Dominio raggiungibile.'; }else{ echo 'Dominio irraggiungibile.'; }
Tenete conto che lo script potrebbe restituire dei risultati inattesi se testato in locale, questo perché non di rado i provider di connessione raccolgono automaticamente le chiamate verso risorse inaccessibili e le redirezionano verso un proprio servizio, ad esempio un motore di ricerca. Utilizzato on line dovrebbe invece funzionare correttamente.