Phobos

PHP - Mesurer un Script le temps d'exécution et la Génération du temps de la page

3 messages dans ce sujet

Dans de nombreux cas, il est vraiment utile de connaître l'heure exacte pour combien de temps un script PHP est en cours d'exécution ou combien de temps prendra la page PHP en charge.

 

D'autre part, il est également utile de savoir que la durée d'une opération d'un script particulier ou d'une partie de chargement de la page prendront.

Après la classe de distribution de PHP est très simple à utiliser, seulement créer la classe et commencer le calendrier et arrêter le chronométrage.

 

La Fonction de temps écoulé peut également être utilisé (le temps écoulé est calculée à partir de l'heure de début de script).

 

Les statistiques peuvent être affichées en impression-fonctions et la même information sans aucun formatage peuvent également s'obtenir avec Get-fonctions.

 

 

PHP classe Temps

<?php
 
class Timing {
private $break;
private $start_time;
private $stop_time;
 
// Constructor for Timing class
public function __construct($break = "<br />") {
$this->break = $break;
// Set timezone
date_default_timezone_set('UTC');
}
 
// Set start time
public function start() {
$this->start_time = microtime(true);
}
 
// Set stop/end time
public function stop() {
$this->stop_time = microtime(true);
}
 
// Returns time elapsed from start
public function getElapsedTime() {
return $this->getExecutionTime(microtime(true));
}
 
// Returns total execution time
public function getTotalExecutionTime() {
if (!$this->stop_time) {
return false;
}
return $this->getExecutionTime($this->stop_time);
}
 
// Returns start time, stop time and total execution time
public function getFullStats() {
if (!$this->stop_time) {
return false;
}
 
$stats = array();
$stats['start_time'] = $this->getDateTime($this->start_time);
$stats['stop_time'] = $this->getDateTime($this->stop_time);
$stats['total_execution_time'] = $this->getExecutionTime($this->stop_time);
 
return $stats;
}
 
// Prints time elapsed from start
public function printElapsedTime() {
echo $this->break . $this->break;
echo "Elapsed time: " . $this->getExecutionTime(microtime(true));
echo $this->break . $this->break;
}
 
// Prints total execution time
public function printTotalExecutionTime() {
if (!$this->stop_time) {
return false;
}
 
echo $this->break . $this->break;
echo "Total execution time: " . $this->getExecutionTime($this->stop_time);
echo $this->break . $this->break;
}
 
// Prints start time, stop time and total execution time
public function printFullStats() {
if (!$this->stop_time) {
return false;
}
 
echo $this->break . $this->break;
echo "Script start date and time: " . $this->getDateTime($this->start_time);
echo $this->break;
echo "Script stop end date and time: " . $this->getDateTime($this->stop_time);
echo $this->break . $this->break;
echo "Total execution time: " . $this->getExecutionTime($this->stop_time);
echo $this->break . $this->break;
}
 
// Format time to date and time
private function getDateTime($time) {
return date("Y-m-d H:i:s", $time);
}
 
// Get execution time by timestamp
private function getExecutionTime($time) {
return $time - $this->start_time;
}
}
 
?>

Exemple d'utilisation 1

<?php
 
// Create new Timing class with n break
$timing = new Timing("n");
// Start timing
$timing->start();
 
// Loop ten rounds and sleep one second per round
for ($i=1;$i<=10;$i++) {
echo $i . "t"; sleep(1);
// Print elapsed time every 2 rounds
if ($i%2==0) {
$timing->printElapsedTime();
}
}
// Stop/end timing
$timing->stop();
 
// Print only total execution time
$timing->printTotalExecutionTime();
 
// Print full stats
$timing->printFullStats();
 
?>
Exemple de sortie :
 
$ php timing_example1.php
1 2
 
Elapsed time: 2.0003080368042
 
3 4
 
Elapsed time: 4.0006020069122
 
5 6
 
Elapsed time: 6.0008690357208
 
7 8
 
Elapsed time: 8.0011501312256
 
9 10
 
Elapsed time: 10.001409053802
 
 
 
Total execution time: 10.001439094543
 
 
 
Script start date and time: 2010-01-08 13:19:17
Script stop end date and time: 2010-01-08 13:19:27
 
Total execution time: 10.001439094543
$
Exemple d'utilisation 2
 
<?php
 
// Create new Timing class with n break
$timing = new Timing("n");
// Start timing
$timing->start();
 
$elapsed_times = array();
 
// Loop ten rounds and sleep one second per round
for ($i=1;$i<=10;$i++) {
echo $i . "t"; sleep(1);
// Get elapsed time every rounds
$elapsed_times[$i] = $timing->getElapsedTime();
}
 
echo "nn";
 
// Stop/end timing
$timing->stop();
 
// Get full stats
$times = $timing->getFullStats();
 
foreach ($elapsed_times as $key => $t) {
$t2;
if (isset($elapsed_times[$key-1])) {
$t2 = $t - $elapsed_times[$key-1];
}
else {
$t2 = $t;
}
echo "Round: " . $key . " Time: " . $t2 . "n";
}
echo "Total execution time: " . $times['total_execution_time'] . "n";
 
echo $times['start_time'] . " - " . $times['stop_time'] . "n";
 
?>

Exemple de sortie :

 
 
$ php timing_example2.php
1 2 3 4 5 6 7 8 9 10
 
Round: 1 Time: 1.0000989437103
Round: 2 Time: 1.0001330375671
Round: 3 Time: 1.000118970871
Round: 4 Time: 1.0001170635223
Round: 5 Time: 1.0001168251038
Round: 6 Time: 1.0001120567322
Round: 7 Time: 1.000118970871
Round: 8 Time: 1.0001220703125
Round: 9 Time: 1.0001239776611
Round: 10 Time: 1.0001330375671
Total execution time: 10.001236915588
2010-01-08 13:19:47 - 2010-01-08 13:19:57
$

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant