66 votes

Démarrer et arrêter un timer PHP

J'ai besoin d'informations concernant le démarrage et l'arrêt d'un timer en PHP. Je dois mesurer le temps écoulé depuis le début de mon programme .exe (j'utilise la fonction exec() dans mon script php) jusqu'à la fin de l'exécution et afficher le temps qu'il a fallu en secondes.

Comment puis-je faire ceci?

132voto

Polynomial Points 12830

Vous pouvez utiliser microtime et calculer la différence :

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

Voici la doc PHP pour microtime : http://php.net/manual/en/function.microtime.php

12voto

yooloobooy Points 126

Depuis PHP 7.3, la fonction hrtime doit être utilisée pour l'instrumentation.

 $start = hrtime(true);
// run your code...
$end = hrtime(true);   

echo ($end - $start);                // Nanoseconds
echo ($end - $start) / 1000000;      // Milliseconds
echo ($end - $start) / 1000000000;   // Seconds

La fonction microtime mentionnée repose sur l'horloge système. Ce qui peut être modifié par exemple par le programme ntpd sur Ubuntu ou simplement par l'administrateur système.

8voto

Jon Points 194296

Utilisez la fonction microtime . La documentation comprend un exemple de code.

6voto

Anita Points 61

Pour votre objectif, cette classe simple devrait être tout ce dont vous avez besoin :

 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

3voto

vikky Points 2077

Vous pouvez utiliser Timer Class

     <?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;
   }
}

?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X