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