PHP script to display server status, this script wont flood the server each time user visits your website, it checks server status every 30 seconds (this will make your website to work way faster.
<?php
ini_set( "display_errors", 0); //hide fsockopen/fopen warnings if file doesn't exist or couldn't connect
$g_Status = 0;
$g_Ip = "127.0.0.1"; //Server ip
$g_Port = "7777"; //Server Port
function IsOnline($ip, $port)
{
$sock=@fsockopen($ip, $port, $errNo, $errStr, 3);//timeout set to 3 seconds
if($sock)
{
fclose($sock);
return 1;
}
return 0;
}
function RefreshStatus()
{
global $g_Ip, $g_Port;
$status = IsOnline($g_Ip, $g_Port);
//storing info about timestamp and server status
$file = fopen("status.txt", "wb");
$timestamp = time() + 30; //it will refresh every 30 seconds - won't flood the server
$cont = $timestamp .' '. $status;
fwrite($file, $cont);
fclose($file);
return $status;
}
$file = fopen("status.txt", "r");
if(!$file)
{
//file doesn't exist
$g_Status = RefreshStatus();
}else
{
$cont = fread($file, filesize("status.txt"));
$data = explode(" ", $cont); //$data[0] is our timestamp and $data[1] is our server status
if($data[0] < time())
{
//refresh status
$g_Status = RefreshStatus();
}else
{
$g_Status = $data[1];
}
}
//Display server status
if($g_Status)
{
echo "Online";
}else
{
echo "Offline";
}
?>
Credits:Vanganth and some edits made by me.