Ostatnio pisząc silnik swojego CMS’a potrzebowałem zmierzyć czas ładowania poszczególnych części strony.
Z racji tego, że cały skrypt nie jest długi a jest dość przydatny postanowiłem się nim podzielić.

<?php
class TimeLoad
{
  private $start, $time_array, $status;

  function __construct($status)
  {
    $this->start = microtime(true);
    $this->status = $status;
  }

  function __destruct()
  {
    if($this->status == true)
    {
      foreach ($this->time_array as $name => $time)
      {
        echo $name.' @ '.$time.'<br />';
      }
    }
  }

  function get($name, $round = 3)
  {
    $this->time_array[$name] = round(microtime(true) - $this->start,$round);
  }

}

Sposób użycia:

<?php
$tl = new TimeLoad(true); // ture jeśli ma pokazać informacje o czasie ładowania, false jeśli ma nie pokazywać tej informacji.

// 1 część strony.

$tl->get('Czas ładowania po 1 części'); // zapisujemy czas ładowania po 1 części strony z zaokrągleniem do 3 miejsc po przecinku.

// 2 część strony.

$tl->get('Czas ładowania po 2 części', 2); // zapisujemy czas ładowania po 2 części strony z zaokrągleniem do 2 miejsc po przecinku.

// 3 część strony.

$tl->get('Końcowy czas', 5); // zapisujemy końcowy czas ładowania strony z zaokrągleniem do 5 miejsc po przecinku.

Oczywiście do podanych czasów należy też wziąć poprawkę na samo ich obliczanie co też chwilę zajmuje :)

Miłej optymalizacji!