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();

Категории: Разработка