Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : POSIX Functions : posix_times

posix_times

Get process times (PHP 4, PHP 5)
array posix_times ( )

Example 1888. Example use of posix_times()

<?php

$times
= posix_times();

print_r($times);
?>

The above example will output something similar to:

Array
(
   [ticks] => 25814410
   [utime] => 1
   [stime] => 1
   [cutime] => 0
   [cstime] => 0
)

Code Examples / Notes » posix_times

rossz+php

This function will return the system uptime as a human readable string such as "172 days, 18 hours, 15 minutes".  I didn't bother to handle singular so the grammar could be a bit off, e.g. 1 hours.
function uptime() {
 if (!$times = posix_times()) {
   return ("unknown");
 } else {
   $now = $times['ticks'];
   $days = intval($now / (60*60*24*100));
   $remainder = $now % (60*60*24*100);
   $hours = intval($remainder / (60*60*100));
   $remainder = $remainder % (60*60*100);
   $minutes = intval($remainder / (60*100));
   return ("$days days, $hours hours, $minutes minutes");
 }
}


not_rich_yet

If you want the output to be 'grammatically correct' then try the following code.  It will eg print '1 minute' as opposed to '1 minutes', the same goes for days and hours:
Put the following code somewhere in the head of the page code:
<?php
function uptime() {
if (!$times = posix_times() ) {
return ("unknown");
} else {
$now = $times['ticks'];
$days = intval($now / (60*60*24*100));
$remainder = $now % (60*60*24*100);
$hours = intval($remainder / (60*60*100));
$remainder = $remainder % (60*60*100);
$minutes = intval($remainder / (60*100));
if ($days == 1) {$writeDays = "day";} else {$writeDays = "days";}
if ($hours == 1) {$writeHours = "hour"; } else {$writeHours = "hours";}
if ($minutes == 1) {$writeMins = "minute";} else {$writeMins = "minutes";}
return ("$days $writeDays, $hours $writeHours, $minutes $writeMins");
}
}
?>
Then put this bit where you want the info displayed:
<?php
print uptime();
?>
Regards,
nry


murphy

I am not sure why, and it could just be me but on my FreeBSD system using
$time = posix_times();
$time['ticks'] is an enormous value that bears no relation to the system uptime (I tested by rebooting the system,  the number does not change).
I checked my timecounters, they tick every 10.000msec and I did the maths on the returned value and it suggested the machine had been up for over 200 days - it was reformatted about a week ago.
This could be to do with FreeBSD, or *BSD, or just *idiots like me but just check before you use the function.
~
FreeBSD 5.1-R, Apache 2.0.46, PHP4.3.2


brain

doesnt work with freebsd. as stated above the clock ticks at different intervals on different platforms.
for system uptime consider piping the uptime command or similar, depending on if performance is an issue or not.


Change Language


Follow Navioo On Twitter
posix_access
posix_ctermid
posix_get_last_error
posix_getcwd
posix_getegid
posix_geteuid
posix_getgid
posix_getgrgid
posix_getgrnam
posix_getgroups
posix_getlogin
posix_getpgid
posix_getpgrp
posix_getpid
posix_getppid
posix_getpwnam
posix_getpwuid
posix_getrlimit
posix_getsid
posix_getuid
posix_initgroups
posix_isatty
posix_kill
posix_mkfifo
posix_mknod
posix_setegid
posix_seteuid
posix_setgid
posix_setpgid
posix_setsid
posix_setuid
posix_strerror
posix_times
posix_ttyname
posix_uname
eXTReMe Tracker