NamePros.Com (http://www.namepros.com/)
-   CODE (http://www.namepros.com/code/)
-   -   Server Status Script (http://www.namepros.com/code/271042-server-status-script.html)

lee101 12-19-2006 11:11 AM

Server Status Script
 
Here is a simple server status script which I have made, it should work with most hosting accounts that have PHP enabled. If not you may need to change the servers in the services array, for example on shared hosting the HTTP server address may need to be changed to your websites URL.

A live demo is available here:
http://lee.conceptsublime.com/service_status.php

You can add/remove services by adding or removing them to/from the $services array.

Any feedback is appreciated!

To install just copy the code below into a php file, and run the php file. Advanced users may want to adjust the services it checks, depending on what you have installed on your server.
PHP Code:
<?php
/*
    Server Status Script
    Created by: Lee Findlow
    Contact:     leefindlow@gmail.com
    Website:     http://conceptsublime.com
*/
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Server Status Script</title>
</head>

<body>
<?php
//Page Variables
    
$online='<td style="background-color:#00FF00; padding:5px;">Online</td>';
    
$offline='<td style="background-color:#FF0000; padding:5px;">Offline</td>';
//Functions
    
function servercheck($server,$port){
        
//Check that the port value is not empty
        
if(empty($port)){
            
$port=80;
        }
        
//Check that the server value is not empty
        
if(empty($server)){
            
$server='localhost';
        }
        
//Connection
        
$fp=@fsockopen($server, $port, $errno, $errstr, 1);
            
//Check if connection is present
            
if($fp){
                
//Return Alive
                
return 1;
            } else{
                
//Return Dead
                
return 0;
            }
        
//Close Connection
        
fclose($fp);
    }
//Ports and Services to check
$services=array(
    
'HTTP (Port 80)' => array('localhost' => 80),
    
'HTTPS (Port 443)' => array('localhost' => 443),
    
'FTP (Port 21)' => array('localhost' => 21),
    
'MySQL (Port 3306)' => array('localhost' => 3306),
    
'SMTP (Port 25)' => array('localhost' =>  25),
    
'POP3 (Port 110)' => array('localhost' =>  110),
    
'Internet Connection' => array('google.com' => 80)
);
?>
<table>
<?php
//Check All Services
foreach($services as $name => $server){
?>
    <tr>
    <td><?php echo $name; ?></td>
<?php
    
foreach($server as $host => $port){
        if(
servercheck($host,$port)){ echo $online; }else{ echo $offline; }
    }
?>
    </tr>
<?php
}
?>
</table>
</body>
</html>


Thanks, Lee :)

Gene 12-19-2006 11:15 AM

Works great! Thank you :) Rep added

Barrucadu 12-19-2006 11:18 AM

Nice simple bit of code, that will help some people.
Rep++

Infact, its given me an idea for a program to make...

lee101 12-19-2006 11:33 AM

Thanks everyone, seems like ti works then, it is actually a part of a larger project that I am working, although I thought i would release this as it is probably useful alone

Gene 12-19-2006 11:38 AM

Just a note: I 'think' it's working correctly, because the report I get says "Online" for all of the lines. But there is no way for me to know whether this report is correct. Just assuming it is!

lee101 12-19-2006 11:43 AM

Oh, thanks for that Gene, I'll have a fiddle with it now to test it, On my PC I don't have HTTPS, SMTP or POP3 and it doesn't recognise any, but i'll fiddle around disabling stuff to make sure it recognises everything, hopefully it will though.

Noobie 12-19-2006 12:57 PM

Just a recommendation

PHP Code:
function servercheck($server,$port){
        
//Check that the port value is not empty
        
if(empty($port)){
            
$port=80;
        }
        
//Check that the server value is not empty
        
if(empty($server)){
            
$server='localhost';
        }


Can be
PHP Code:
function servercheck($server="localhost",$port="80")

lee101 01-16-2007 12:15 PM

Updated Version
 
Hi,
Here's a slightly updated version of the script I posted before, I've made it more customisable so that you can format the output however you want.
PHP Code:
<?php
/*
    Server Status Script
    Created by: Lee Findlow
    Contact:     leefindlow@gmail.com
    Website:     http://conceptsublime.com
*/

//Standard Services to Check
    
$services=array(
        
'HTTP (Port 80)' => array('localhost' => 80),
        
'HTTPS (Port 443)' => array('localhost' => 443),
        
'FTP (Port 21)' => array('localhost' => 21),
        
'MySQL (Port 3306)' => array('localhost' => 3306),
        
'SMTP (Port 25)' => array('localhost' =>  25),
        
'POP3 (Port 110)' => array('localhost' =>  110),
        
'Internet Connection' => array('google.com' => 80)
    );

//Functions
    
function ServerCheck($server = 'localhost', $port = '80'){
        
//Connection
        
$fp=@fsockopen($server, $port, $errno, $errstr, 1);
            
//Check if connection is present
            
if($fp){
                
//Return Alive
                
return 1;
            } else{
                
//Return Dead
                
return 0;
            }
        
//Close Connection
        
fclose($fp);
    }

//Function to check all services in the $services array
    
function CheckAll(){
        
//Check All Services
        
global $services;
        foreach(
$services as $name => $server){
            foreach(
$server as $host => $port){
                
$status[$name] = ServerCheck($host,$port);
            }
        }
        return
$status;
    }
    
?>

This returns the services as an array, when you use the function CheckAll().
An example usage is
PHP Code:
<?php
include('file.php');
foreach(
CheckAll() as $service => $stat){
echo
$service.' - '.$stat.'<br />';
}

It returns 1/true if the service is online, and 0/false if it isn't

Thanks,
Lee :)

kleszcz 01-16-2007 02:13 PM

Thanks Lee. Really helpful script for us. Rep added. :)

DJ 01-20-2007 08:05 AM

Thanks Lee, i can use this one!


All times are GMT -7. The time now is 02:01 PM.
Site Sponsors
Advertise your business at NamePros

Powered by: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0