12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- /*
- * This file is part of the symfony package.
- * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- /**
- * sfWebDebugPanelTimer adds a panel to the web debug toolbar with timer information.
- *
- * @package symfony
- * @subpackage debug
- * @author Fabien Potencier <fabien.potencier@symfony-project.com>
- * @version SVN: $Id: sfWebDebugPanelTimer.class.php 12982 2008-11-13 17:25:10Z hartym $
- */
- class sfWebDebugPanelTimer extends sfWebDebugPanel
- {
- static protected
- $startTime = null;
- /**
- * Constructor.
- *
- * @param sfWebDebug $webDebug The web debut toolbar instance
- */
- public function __construct(sfWebDebug $webDebug)
- {
- parent::__construct($webDebug);
- $this->webDebug->getEventDispatcher()->connect('debug.web.filter_logs', array($this, 'filterLogs'));
- }
- public function getTitle()
- {
- return '<img src="'.$this->webDebug->getOption('image_root_path').'/time.png" alt="Time" /> '.$this->getTotalTime().' ms';
- }
- public function getPanelTitle()
- {
- return 'Timers';
- }
- public function getPanelContent()
- {
- if (sfTimerManager::getTimers())
- {
- $totalTime = $this->getTotalTime();
- $panel = '<table class="sfWebDebugLogs" style="width: 300px"><tr><th>type</th><th>calls</th><th>time (ms)</th><th>time (%)</th></tr>';
- foreach (sfTimerManager::getTimers() as $name => $timer)
- {
- $panel .= sprintf('<tr><td class="sfWebDebugLogType">%s</td><td class="sfWebDebugLogNumber" style="text-align: right">%d</td><td style="text-align: right">%.2f</td><td style="text-align: right">%d</td></tr>', $name, $timer->getCalls(), $timer->getElapsedTime() * 1000, $totalTime ? ($timer->getElapsedTime() * 1000 * 100 / $totalTime) : 'N/A');
- }
- $panel .= '</table>';
- return $panel;
- }
- }
- public function filterLogs(sfEvent $event, $logs)
- {
- $newLogs = array();
- foreach ($logs as $log)
- {
- if ('sfWebDebugLogger' != $log['type'])
- {
- $newLogs[] = $log;
- }
- }
- return $newLogs;
- }
- static public function startTime()
- {
- self::$startTime = microtime(true);
- }
- static public function isStarted()
- {
- return !is_null(self::$startTime);
- }
- protected function getTotalTime()
- {
- return !is_null(self::$startTime) ? sprintf('%.0f', (microtime(true) - self::$startTime) * 1000) : 0;
- }
- }
|