Spaces:
Sleeping
Sleeping
processmaker-community / processmaker-files /vendor /symfony /http-kernel /DataCollector /TimeDataCollector.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'); | |
| } | |
| $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 int The time | |
| */ | |
| public function getStartTime() | |
| { | |
| return $this->data['start_time']; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getName() | |
| { | |
| return 'time'; | |
| } | |
| } | |