Førstesiden / PHP / timer2.html
PHP4/PHP5-skript: Tidtaker
Denne klassen gir mulighet for å ha en eller flere tidstakere gående
samtidig på serveren. Tidstakerne kan startes, pauses og stoppes uavhengig
av hverandre, og
til slutt sitter man igjen med antall sekunder som har gått, med nøyaktighet
på et mikrosekund. Nok prat; her er scriptet:
<?php
class Timer
{
// total tid; summeres etter hvert klokkestopp
var $time;
// Om tidtakeren går eller er stanset
var $ticking;
// Midlertidig mikrosekund-tid
var $temp_time;
function Timer()
{
// Innstill medlemsvariabler til å være riktig datatype
$this->time = (float)0;
$this->ticking = false;
$this->temp_time = (float)0;
}
// Returner tiden akkurat nå i mikrosekunder
function get_microtime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
// Start klokken
function start()
{
// Start klokken bare hvis den står stille
if ( !$this->ticking )
{
$this->temp_time = $this->get_microtime();
return true;
}
else { return false };
}
// Stopp klokken
function stop()
{
// Stopp klokken bare hvis den tikker
if ( $this->ticking )
{
$this->time += $this->get_microtime() - $this->temp_time;
return true;
}
else return false;
}
// Returnerer tiden til denne timeren
function gettimer()
{
if ( $this->ticking )
{
$this->stop;
}
$time = $this->time;
$this->start();
return $time;
}
}
?>
PHP4-scriptet over kjører også i PHP5, men som en liten bonus
legger jeg også ved det samme scriptet optimalisert for PHP5:
<?php
// Timer - start a ticking timer
class Timer
{
private $time;
private $ticking;
private $temp_time;
function __construct()
{
$this->time = (float)0;
$this->ticking = false;
$this->temp_time = (float)0;
}
private function get_microtime()
{
return microtime(true);
}
public function start()
{
if ( !$this->ticking )
{
$this->temp_time = $this->get_microtime();
return true;
}
else return false;
}
public function stop()
{
if ( $this->ticking )
{
$this->time += $this->get_microtime() - $this->temp_time;
return true;
}
else return false;
}
public function gettimer()
{
if ( $this->ticking ) $this->stop();
return $this->time;
}
}
?>
Hovedforskjellen er at man ikke har adgang til medlemsvariablene utenfor
klassen selv.
Denne koden inkluderes i skriptet den skal brukes med, eller legges i en
egen fil og lastes med include() eller require().
Bruksanvisning:
<?php
// Last inn timer-klassen
include("Script med class timer.php");
// Lag ny timer
$MinTimer = new Timer;
// (venter i 3 sekunder)
sleep(3);
// Stopp timeren
$MinTimer->stop();
// (venter i 2 sekunder)
sleep(2);
// Start timeren igjen
$MinTimer->start();
// (vent i 5 sekunder)
sleep(5);
// Stopp timer
$MinTimer->stopp();
// Registrer tid
$Tid = $MinTimer->gettimer();
?>
Sendt inn av Eirik Sletteberg til Tips/triks-seksjonen på sindrem.com
Utskriftsvennlig versjon | Forslag til endring av artikkel | Skriv ut | Ny kommentar
Det er ingen kommentarer til denne artikkelen. | |
|