Deprecated : Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 58
Deprecated : Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 76
Symfony Profiler
<?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 ;
use Symfony\Component\Stopwatch\Stopwatch ;
use Symfony\Component\Stopwatch\StopwatchEvent ;
/**
* @author Fabien Potencier <fabien@symfony.com>
*
* @final
*/
class TimeDataCollector extends DataCollector implements LateDataCollectorInterface
{
private $kernel ;
private $stopwatch ;
public function __construct ( KernelInterface $kernel = null , Stopwatch $stopwatch = null )
{
$this -> kernel = $kernel ;
$this -> stopwatch = $stopwatch ;
$this -> data = [ 'events' => [], 'stopwatch_installed' => false , 'start_time' => 0 ];
}
/**
* {@inheritdoc}
*/
public function collect ( Request $request , Response $response , \Throwable $exception = null )
{
if (null !== $this -> kernel ) {
$startTime = $this -> kernel -> getStartTime ();
} else {
$startTime = $request -> server -> get ( 'REQUEST_TIME_FLOAT' );
}
$this -> data = [
'token' => $request -> attributes -> get ( '_stopwatch_token' ),
'start_time' => $startTime * 1000 ,
'events' => [],
'stopwatch_installed' => class_exists ( Stopwatch ::class, false ),
];
}
/**
* {@inheritdoc}
*/
public function reset ()
{
$this -> data = [ 'events' => [], 'stopwatch_installed' => false , 'start_time' => 0 ];
if (null !== $this -> stopwatch ) {
$this -> stopwatch -> reset ();
}
}
/**
* {@inheritdoc}
*/
public function lateCollect ()
{
if (null !== $this -> stopwatch && isset( $this -> data [ 'token' ])) {
$this -> setEvents ( $this -> stopwatch -> getSectionEvents ( $this -> data [ 'token' ]));
}
unset($this -> data [ 'token' ]);
}
/**
* @param StopwatchEvent[] $events The request events
*/
public function setEvents (array $events )
{
foreach ($events as $event ) {
$event -> ensureStopped ();
}
$this -> data [ 'events' ] = $events ;
}
/**
* @return StopwatchEvent[]
*/
public function getEvents (): array
{
return $this -> data [ 'events' ];
}
/**
* Gets the request elapsed time.
*/
public function getDuration (): float
{
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.
*/
public function getInitTime (): float
{
if (!isset($this -> data [ 'events' ][ '__section__' ])) {
return 0 ;
}
return $this -> data [ 'events' ][ '__section__' ]-> getOrigin () - $this -> getStartTime ();
}
public function getStartTime (): float
{
return $this -> data [ 'start_time' ];
}
public function isStopwatchInstalled (): bool
{
return $this -> data [ 'stopwatch_installed' ];
}
/**
* {@inheritdoc}
*/
public function getName (): string
{
return 'time' ;
}
}