| Viewing file:  TimeDataCollector.php (3.15 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
<?php
 /*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
 namespace Symfony\Component\HttpKernel\DataCollector;
 
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\KernelInterface;
 
 /**
 * TimeDataCollector.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
 class TimeDataCollector extends DataCollector implements LateDataCollectorInterface
 {
 protected $kernel;
 protected $stopwatch;
 
 public function __construct(KernelInterface $kernel = null, $stopwatch = null)
 {
 $this->kernel = $kernel;
 $this->stopwatch = $stopwatch;
 }
 
 /**
 * {@inheritdoc}
 */
 public function collect(Request $request, Response $response, \Exception $exception = null)
 {
 if (null !== $this->kernel) {
 $startTime = $this->kernel->getStartTime();
 } else {
 $startTime = $request->server->get('REQUEST_TIME_FLOAT', $request->server->get('REQUEST_TIME'));
 }
 
 $this->data = array(
 'token'      => $response->headers->get('X-Debug-Token'),
 'start_time' => $startTime * 1000,
 'events'     => array(),
 );
 }
 
 /**
 * {@inheritdoc}
 */
 public function lateCollect()
 {
 if (null !== $this->stopwatch && isset($this->data['token'])) {
 $this->setEvents($this->stopwatch->getSectionEvents($this->data['token']));
 }
 unset($this->data['token']);
 }
 
 /**
 * Sets the request events.
 *
 * @param array $events The request events
 */
 public function setEvents(array $events)
 {
 foreach ($events as $event) {
 $event->ensureStopped();
 }
 
 $this->data['events'] = $events;
 }
 
 /**
 * Gets the request events.
 *
 * @return array The request events
 */
 public function getEvents()
 {
 return $this->data['events'];
 }
 
 /**
 * Gets the request elapsed time.
 *
 * @return float The elapsed time
 */
 public function getDuration()
 {
 if (!isset($this->data['events']['__section__'])) {
 return 0;
 }
 
 $lastEvent = $this->data['events']['__section__'];
 
 return $lastEvent->getOrigin() + $lastEvent->getDuration() - $this->getStartTime();
 }
 
 /**
 * Gets the initialization time.
 *
 * This is the time spent until the beginning of the request handling.
 *
 * @return float The elapsed time
 */
 public function getInitTime()
 {
 if (!isset($this->data['events']['__section__'])) {
 return 0;
 }
 
 return $this->data['events']['__section__']->getOrigin() - $this->getStartTime();
 }
 
 /**
 * Gets the request time.
 *
 * @return integer The time
 */
 public function getStartTime()
 {
 return $this->data['start_time'];
 }
 
 /**
 * {@inheritdoc}
 */
 public function getName()
 {
 return 'time';
 }
 }
 
 |