Phobos Posté(e) le 10 décembre 2014 Signaler Share Posté(e) le 10 décembre 2014 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 $ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nicola Posté(e) le 14 décembre 2014 Signaler Share Posté(e) le 14 décembre 2014 Pratique sa mais avec les sites d'analyse sa le fait automatiquement comme GTmetrix Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Phobos Posté(e) le 14 décembre 2014 Auteur Signaler Share Posté(e) le 14 décembre 2014 Oui mais c'est toujours bien de savoir le faire Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.