<?php
define("GETTIME", '$timer->gettime()');
class timer{
var $times;
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
function timer(){
$this->times['total']["start"] = $this->getmicrotime();
}
function start($name){
echo "<hr>Starting $name<hr>\n";
$this->times[$name]["start"] = $this->getmicrotime();
unset($this->times[$name]["stop"]);
}
function stop($name, $decimals = 10){
if( isset($this->times[$name]['start']) ){
$this->times[$name]["stop"] = $this->getmicrotime();
return number_format($this->times[$name]["stop"]-$this->times[$name]["start"],$decimals);
}else{
echo "<hr>$name is not set<hr>\n";
}
}
function getextratime($decimals = 10){
$timetotal = 0;
while( list( $k) = each( $this->times)){
if( $k != 'total' ) $timetotal += (int)$this->gettime($k);
}
reset($this->times);
return number_format($this->gettime("total") - $timetotal, $decimals);
}
function gettime($name = "total", $decimals = 10){
if( !isset($this->times[$name]["stop"]) ){
return number_format($this->getmicrotime() - $this->times[$name]["start"],$decimals);
}else{
return number_format($this->times[$name]["stop"] - $this->times[$name]["start"],$decimals);
}
}
function showtimes($decimals = 10, $format = "%name: %time<br>\n"){
while( list( $k, $v) = each($this->times)){
echo str_replace(array("%name", "%time"), array($k, $this->gettime($k,$decimals)), $format);
}
reset($this->times);
}
}
?>