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>
							 |