105 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**********************************************************************
 | 
						|
  Dynamic Uptime Script (shell_exec version)
 | 
						|
  in PHP / JavaScript / DHTML for Windows
 | 
						|
 | 
						|
  Written by Tony Bhimani
 | 
						|
  September 17, 2005
 | 
						|
  http://www.xenocafe.com/
 | 
						|
  
 | 
						|
  This code is free for use by anyone that finds it useful and 
 | 
						|
  all I ask in return is some credit if you use it.
 | 
						|
 | 
						|
  This script is much like the one I wrote for Linux, but works for
 | 
						|
  Microsoft Windows platforms. It issues "net statistics server"
 | 
						|
  to get information about the running OS. Within that information 
 | 
						|
  is when Windows started up. That date & time is stripped out using
 | 
						|
  a regular expressions, converted to a Unix timestamp, and the total
 | 
						|
  uptime in seconds is calculated by subtracting the current time.
 | 
						|
  The rest of the code is identical to my Linux uptime script.
 | 
						|
***********************************************************************/
 | 
						|
 | 
						|
// format the uptime in case the browser doesn't support dhtml/javascript
 | 
						|
// static uptime string
 | 
						|
function format_uptime($seconds) {
 | 
						|
  $secs = intval($seconds % 60);
 | 
						|
  $mins = intval($seconds / 60 % 60);
 | 
						|
  $hours = intval($seconds / 3600 % 24);
 | 
						|
  $days = intval($seconds / 86400);
 | 
						|
  
 | 
						|
  if ($days > 0) {
 | 
						|
    $uptimeString .= $days;
 | 
						|
    $uptimeString .= (($days == 1) ? " day" : " days");
 | 
						|
  }
 | 
						|
  if ($hours > 0) {
 | 
						|
    $uptimeString .= (($days > 0) ? ", " : "") . $hours;
 | 
						|
    $uptimeString .= ((hours == 1) ? " hour" : " hours");
 | 
						|
  }
 | 
						|
  if ($mins > 0) {
 | 
						|
    $uptimeString .= (($days > 0 || $hours > 0) ? ", " : "") . $mins;
 | 
						|
    $uptimeString .= (($mins == 1) ? " minute" : " minutes");
 | 
						|
  }
 | 
						|
  if ($secs > 0) {
 | 
						|
    $uptimeString .= (($days > 0 || $hours > 0 || $mins > 0) ? ", " : "") . $secs;
 | 
						|
    $uptimeString .= (($secs == 1) ? " second" : " seconds");
 | 
						|
  }
 | 
						|
  return $uptimeString;
 | 
						|
}
 | 
						|
 | 
						|
// get the server statistics with "net statistics server" by shell_exec
 | 
						|
$winstats = shell_exec("net statistics server");
 | 
						|
 | 
						|
// grab the date & time the server started up
 | 
						|
preg_match("(\d{1,2}/\d{1,2}/\d{4}\s+\d{1,2}\:\d{2}\s+\w{2})", $winstats, $matches);
 | 
						|
 | 
						|
// convert the readable date & time to a timestamp and deduct it from the current timestamp
 | 
						|
// thus giving us the total uptime in seconds
 | 
						|
$uptimeSecs = time() - strtotime($matches[0]);
 | 
						|
 | 
						|
// get the static uptime
 | 
						|
$staticUptime = "Server Uptime: ".format_uptime($uptimeSecs);
 | 
						|
?>
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
<script language="javascript">
 | 
						|
<!--
 | 
						|
var upSeconds=<?php echo $uptimeSecs; ?>;
 | 
						|
function doUptime() {
 | 
						|
var uptimeString = "Server Uptime: ";
 | 
						|
var secs = parseInt(upSeconds % 60);
 | 
						|
var mins = parseInt(upSeconds / 60 % 60);
 | 
						|
var hours = parseInt(upSeconds / 3600 % 24);
 | 
						|
var days = parseInt(upSeconds / 86400);
 | 
						|
if (days > 0) {
 | 
						|
  uptimeString += days;
 | 
						|
  uptimeString += ((days == 1) ? " day" : " days");
 | 
						|
}
 | 
						|
if (hours > 0) {
 | 
						|
  uptimeString += ((days > 0) ? ", " : "") + hours;
 | 
						|
  uptimeString += ((hours == 1) ? " hour" : " hours");
 | 
						|
}
 | 
						|
if (mins > 0) {
 | 
						|
  uptimeString += ((days > 0 || hours > 0) ? ", " : "") + mins;
 | 
						|
  uptimeString += ((mins == 1) ? " minute" : " minutes");
 | 
						|
}
 | 
						|
if (secs > 0) {
 | 
						|
  uptimeString += ((days > 0 || hours > 0 || mins > 0) ? ", " : "") + secs;
 | 
						|
  uptimeString += ((secs == 1) ? " second" : " seconds");
 | 
						|
}
 | 
						|
var span_el = document.getElementById("uptime");
 | 
						|
var replaceWith = document.createTextNode(uptimeString);
 | 
						|
span_el.replaceChild(replaceWith, span_el.childNodes[0]);
 | 
						|
upSeconds++;
 | 
						|
setTimeout("doUptime()",1000);
 | 
						|
}
 | 
						|
// -->
 | 
						|
</script>
 | 
						|
</head>
 | 
						|
<body onLoad="doUptime();">
 | 
						|
 | 
						|
<!-- Uses the DIV tag, but SPAN can be used as well -->
 | 
						|
<div id="uptime" style="font-weight:bold;"><?php echo $staticUptime; ?></div>
 | 
						|
 | 
						|
</body>
 | 
						|
</html>
 |