2011-11-29 22 views
29

Necesito información sobre cómo iniciar y detener un temporizador en PHP. Necesito medir el tiempo transcurrido desde el inicio de mi programa .exe (estoy usando la función exec() en mi script php) hasta que complete la ejecución y muestre el tiempo que tomó en segundos. ¿Hay alguna manera de cómo puedo hacer esto?Iniciar y detener un temporizador PHP

Gracias

Respuesta

74

Puede utilizar microtime y calcular la diferencia:

$time_pre = microtime(true); 
exec(...); 
$time_post = microtime(true); 
$exec_time = $time_post - $time_pre; 

Aquí está la documentación de PHP para microtime: http://php.net/manual/en/function.microtime.php

+0

muchas gracias por sus respuestas! Fue realmente útil – 125369

6

Utilice la función microtime. La documentación incluye código de ejemplo.

3

Puede usar temporizador Clase

<?php 

class Timer { 

    var $classname = "Timer"; 
    var $start  = 0; 
    var $stop  = 0; 
    var $elapsed = 0; 

    # Constructor 
    function Timer($start = true) { 
     if ($start) 
     $this->start(); 
    } 

    # Start counting time 
    function start() { 
     $this->start = $this->_gettime(); 
    } 

    # Stop counting time 
    function stop() { 
     $this->stop = $this->_gettime(); 
     $this->elapsed = $this->_compute(); 
    } 

    # Get Elapsed Time 
    function elapsed() { 
     if (!$elapsed) 
     $this->stop(); 

     return $this->elapsed; 
    } 

    # Resets Timer so it can be used again 
    function reset() { 
     $this->start = 0; 
     $this->stop = 0; 
     $this->elapsed = 0; 
    } 

    #### PRIVATE METHODS #### 

    # Get Current Time 
    function _gettime() { 
     $mtime = microtime(); 
     $mtime = explode(" ", $mtime); 
     return $mtime[1] + $mtime[0]; 
    } 

    # Compute elapsed time 
    function _compute() { 
     return $this->stop - $this->start; 
    } 
} 

?> 
5

Para su propósito, este sencillo clase debe ser todo lo que necesita:

class Timer { 
    private $time = null; 
    public function __construct() { 
     $this->time = time(); 
     echo 'Working - please wait..<br/>'; 
    } 

    public function __destruct() { 
     echo '<br/>Job finished in '.(time()-$this->time).' seconds.'; 
    } 
} 


$t = new Timer(); // echoes "Working, please wait.." 

[some operations] 

unset($t); // echoes "Job finished in n seconds." n = seconds elapsed 
Cuestiones relacionadas