PSD to HTML conversion PSD to HTML conversion PSD2HTML.com with over 300 professionals takes the designs to HTML and beyond

Code Snippet

Home » Code Snippets » PHP » Check if Website is Available

Check if Website is Available

Performs a cURL-Request to check, if a website exists / is online

Technique #1

<?php

       if (isDomainAvailible('http://www.css-tricks.com'))
       {
               echo "Up and running!";
       }
       else
       {
               echo "Woops, nothing found there.";
       }

       //returns true, if domain is availible, false if not
       function isDomainAvailible($domain)
       {
               //check, if a valid url is provided
               if(!filter_var($domain, FILTER_VALIDATE_URL))
               {
                       return false;
               }

               //initialize curl
               $curlInit = curl_init($domain);
               curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
               curl_setopt($curlInit,CURLOPT_HEADER,true);
               curl_setopt($curlInit,CURLOPT_NOBODY,true);
               curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

               //get answer
               $response = curl_exec($curlInit);

               curl_close($curlInit);

               if ($response) return true;

               return false;
       }
?>

View Demo

Technique #2

<?php
function Visit($url){
       $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";$ch=curl_init();
       curl_setopt ($ch, CURLOPT_URL,$url );
       curl_setopt($ch, CURLOPT_USERAGENT, $agent);
       curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt ($ch,CURLOPT_VERBOSE,false);
       curl_setopt($ch, CURLOPT_TIMEOUT, 5);
       curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
       curl_setopt($ch,CURLOPT_SSLVERSION,3);
       curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
       $page=curl_exec($ch);
       //echo curl_error($ch);
       $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
       curl_close($ch);
       if($httpcode>=200 && $httpcode<300) return true;
       else return false;
}
if (Visit("http://www.google.com"))
       echo "Website OK"."n";
else
       echo "Website DOWN";
?>

Technique #3

<?php
       ini_set("default_socket_timeout","05");
       set_time_limit(5);
       $f=fopen("http://www.css-tricks.com","r");
       $r=fread($f,1000);
       fclose($f);
       if(strlen($r)>1) {
       echo("<span class='online'>Online</span>");
       }
       else {
       echo("<span class='offline'>Offline</span>");
       }
?>

Subscribe to The Thread

  1. NetHawk says:

    In technique #2 it should probably read
    ... && $httpcode<400) return true;

    instead of
    ... && $httpcode<300) return true;

    Otherwise a redirect would be regarded as “server down”.

  2. Vimal Verma says:

    how to use it ?????????
    what is the method

    • NetHawk says:

      Copy code from example #2 into a text file. Give it the extension .php. Move the file to your webserver and call the url that points to the file. If you have a PHP enabled server (most are) the code will check if Google is up (probably always).

      You can take it from there, but you will need some basic PHP knowledge.

  3. Jason says:

    Which technique is better to use? advantages? disadvantages?

    • NetHawk says:

      #1 checks if the url is valid, that’s a great plus, if the urls are entered by a user and don’t come out of a database or from a list with urls known to be valid.

      #2 on the other hand submits a user agent string. Without it, some server will answer the request with a error 403 (forbidden) or 405 (method not allowed).

      Conclusion: I suggest #2 but with the filter test of #1.

      Actually, Chris should say something about this, because he is running aremysitesup.com, a service that probably uses this technique (see button in the footer of this page – great service, highly recommended).

    • We actually use Ruby and some methods that are far more complex =). But the principal is the same.

  4. Rob says:

    Thanks! I’m wondering if http://www.checksite.us uses the same method?

    Also, what is the purpose of the agent?

    • NetHawk says:

      Checksite.us is probably based on a similar mechanism, although it’s not clear what language is used.

      The UserAgent is a string sent by any browser to identify itself. At least, that was the intention. Nowadays many browser lie about the details. However, as long as a UserAgent is sent, the web server usually sees a request as legitimate. Also robots, e.g. Google have UserAgent strings to identify them.

      If no UserAgent string is sent, some web server don’t let you access the site for whatever reason (they probably don’t like the idea that some tool or other server accesses their pages directly).

      You can see the UserAgent string of your browser (among other information) on this page:

      http://browser.delucamarketing.ch/

  5. jack says:

    none of these techniques really seem to work…everytime i check something like http://www.adfsfdasffsfasfsf.com it always comes back as 200…does anyone know of a way to find out if a website is unavailable like *cough* *cough* godaddy *cough* *cough*

Speak, my friend

At this moment, you have an awesome opportunity* to be the person your mother always wanted you to be: kind, helpful, and smart. Do that, and we'll give you a big ol' gold star for the day (literally).

Posting tips:
  • You can use basic HTML
  • When posting code, please turn all
    < characters into &lt;
  • If the code is multi-line, use
    <pre><code></code></pre>
Thank you,
~ The Management ~