Разработка

PHP: метрика времени выполнения функции

Как нам узнать, сколько времени работает функция? Pinba, xhprof, xdebug?
Да, но их нужно ставить на сервер и последние два модуля вносят немалый оверхед. Поэтому использовать их в продакшне нежелательно.
Пинба классная, но нам нужно «вчера» и пока админ раскатывает модуль php нужно как-то извернуться.

Вспомним, что в php все неиспользуемые переменные будут удалены при выходе из функции. Ага!

class Timer {
  private $time = 0;
  function __construct() {
    $this->time = microtime(true);
  }

  function __destruct() {
    $executionTime = microtime(true) - $this->time;
    // делаем все, что нам надо: логгируем или еще чего
  }
}

Интегрируем в проект.

function foo() {
  $timer = new Timer();
  // что-то делаем
  sleep(5);
  // на выходе будет вызван Time::__destructor(). 
  // Так как все объекты уничтожаются
}

foo();

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s