Dynadot

Server Status Script

NameSilo
Watch
Impact
9
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:
<?php
/*
	Server Status Script
	Created by: Lee Findlow
	Contact: 	[email protected]
	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 :)
 
Last edited:
1
•••
The views expressed on this page by users and staff are their own, not those of NamePros.
Works great! Thank you :) Rep added
 
0
•••
Nice simple bit of code, that will help some people.
Rep++

Infact, its given me an idea for a program to make...
 
0
•••
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
 
0
•••
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!
 
0
•••
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.
 
0
•••
Just a recommendation

PHP:
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:
function servercheck($server="localhost",$port="80")
 
0
•••
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:
<?php
/*
	Server Status Script
	Created by: Lee Findlow
	Contact: 	[email protected]
	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:
<?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 :)
 
1
•••
Thanks Lee. Really helpful script for us. Rep added. :)
 
0
•••
Thanks Lee, i can use this one!
 
0
•••
  • The sidebar remains visible by scrolling at a speed relative to the page’s height.
Back