Verificar com php se o site está online (no ar)

Vi dois caras no fórum perguntando sobre isso, então resolvi fazer um post.

Um simples código com a lib cURL do php, para verificar se um site está ou não no ar.

<?php

	function curl_info($url){
		$ch = curl_init();
		curl_setopt( $ch, CURLOPT_URL, $url );
		curl_setopt( $ch, CURLOPT_HEADER, 1);
		curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
		curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
		curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
        
		$content = curl_exec( $ch );
		$info = curl_getinfo( $ch );

		return $info;
	}

	$site = 'http://www.locaweb.com.br';
	$info = curl_info( $site );
	if( $info['http_code']==200 ) {
		echo '<u>'.$site . '</u> - <strong>está no ar!!</strong><br />';
	} else {
		echo '<u>'.$site . '</u> - está fora do ar<br />';
	}


	$site = 'http://www.locaweba.com.br';
	$info = curl_info( $site );
	if( $info['http_code']==200 ) {
		echo '<u>'.$site . '</u> - <strong>está no ar!!</strong><br />';
	} else {
		echo '<u>'.$site . '</u> - está fora do ar<br />';
	}

Capturo os cabeçalhos da requisição e verifico se o http_status é igual a 200.
Caso seja, significa que o site está sim no ar.

Note que deixei a entrada:
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
para caso o site possua algum redirecionamento, como é o caso da locaweb, que redireciona a home para o /default.html

É isso galera, comentem caso usem. =)

7 Comments

  1. alvaro marcelo

    agosto 1, 2013 at 00:50

    gostaria de saber se tem como receber o tipo de erro que a pagina está enviando exemplo quando tenho um link para download mas quando acesso o mesmo diz que o arquivo não existe ou a página não existe(404) entre outros possíveis erros. abraços obrigado por compartilhar seu conhecimento está sendo de grande valia para mim.

  2. Obrigado William, era justamente o que eu precisava. Administro vários sites e precisava que todos os dias eu pudesse verificar se os sites estão no ar sem entrar em cada site. Resolveu meu problema. Abraços.

  3. Josiel Ferreira da Silva

    fevereiro 8, 2014 at 16:30

    Olá estou tendo um problema om esse código. Tentei fazer o seguinte: Verificar se a url existe, caso não exista não inserir no banco de dados e caso exista inserir…

    site

    <?php
    include "conexao.php";
    
    $url = $_POST['url'];
    $titulo = $_POST['titulo'];
    $frases_chave = $_POST['frases_chave'];
     
    	function curl_info($url){
    		$ch = curl_init();
    		curl_setopt( $ch, CURLOPT_URL, $url );
    		curl_setopt( $ch, CURLOPT_HEADER, 1);
    		curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    		curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    		curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
            
    		$content = curl_exec( $ch );
    		$info = curl_getinfo( $ch );
     
    		return $info;
    	}
     
    	$site = $url;
    	$info = curl_info( $site );
    	if( $info['http_code']==200 ) {
    mysql_query("INSERT INTO tb_seekk (url, titulo, frases_chave) VALUES ('$url', '$titulo', '$frases_chave')");
    echo "document.location.href='index.php';"		
    	} else {
    		echo ''.$site . ' Essa URL não existe...';
    	}
    
    ?>
  4. Você pode utilizar o serviço da Kontrolu: http://www.kontrolu.com.br/sobre/verificacaorapida/
    Eles possuem um plano gratuito que monitora a cada 60 minutos.

  5. Olá meu amigo.
    Vim somente para agradecer, pois este script funciona muito bem e se adequou perfeitamente para minha necessidade.

    Muito Obrigado.

  6. Show de bola!

Deixe uma resposta

Your email address will not be published.

*