radarrplexorganizrnginxsonarrdashboardhtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelanding
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							149 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							149 lines
						
					
					
						
							3.4 KiB
						
					
					
				| <?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; | |
| 
 | |
| /** | |
|  * TimeDataCollector. | |
|  * | |
|  * @author Fabien Potencier <fabien@symfony.com> | |
|  */ | |
| class TimeDataCollector extends DataCollector implements LateDataCollectorInterface | |
| { | |
|     protected $kernel; | |
|     protected $stopwatch; | |
| 
 | |
|     public function __construct(KernelInterface $kernel = null, Stopwatch $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 reset() | |
|     { | |
|         $this->data = array(); | |
| 
 | |
|         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']); | |
|     } | |
| 
 | |
|     /** | |
|      * 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'; | |
|     } | |
| }
 | |
| 
 |