$timer->start(); usleep(500000); $timer->stop(); print 'Unnamed time result: ' . $timer() . PHP_EOL; $timer->start('one'); usleep(100000); $timer->stop('one'); print $timer; // Sum of gaps $timer->start('gap'); usleep(100000); $timer->stop('gap'); $timer->start('gap'); usleep(200000); $timer->stop('gap'); $timer->start('gap'); usleep(300000); $timer->stop('gap'); // Get sum of all gaps print 'Get sum of all gaps: ' . $timer('gap') . PHP_EOL; // returns ~ 0.6 (sec) $timer->start('file'); $timer->start('mysql.sql.query.response.parsing', true); $timer->start('postgres.sql.query.response.parsing'); usleep(300000); $timer->stopTree('mysql.sql.query'); usleep(200000); $timer->start('file.read'); usleep(400000); $timer->stopAll(); print $timer;
public function init() { if (!$this->enabled) { return; } if ($this->fixScriptName) { $scriptName = php_sapi_name() === 'cli' ? implode(' ', $_SERVER['argv']) : '/' . \Yii::app()->urlManager->parseUrl(\Yii::app()->request); $this->setScriptName($scriptName); } $eventHandler = new EventHandler(); $eventHandler->attach(\Yii::app(), 'request', 'onBeginRequest', 'onEndRequest'); foreach ($this->profileEvents as $event) { if (is_string($event[0])) { $event[0] = \Yii::app()->getComponent($event[0]); } if (!$event[0] instanceof \CComponent) { throw new \InvalidArgumentException(var_export($event[0], true) . ' is not string or instance of CComponent'); } call_user_func_array([$eventHandler, 'attach'], $event); } \Yii::app()->attachEventHandler('onEndRequest', function () { Timer::stopAll(); }); }