Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
TimeDataCollector.php
001 <?php
002
003 /*
004 * This file is part of the Symfony package.
005 *
006 * (c) Fabien Potencier <fabien@symfony.com>
007 *
008 * For the full copyright and license information, please view the LICENSE
009 * file that was distributed with this source code.
010 */
011
012 namespace Symfony\Component\HttpKernel\DataCollector;
013
014 use Symfony\Component\HttpFoundation\Request;
015 use Symfony\Component\HttpFoundation\Response;
016 use Symfony\Component\HttpKernel\KernelInterface;
017
018 /**
019 * TimeDataCollector.
020 *
021 * @author Fabien Potencier <fabien@symfony.com>
022 */
023 class TimeDataCollector extends DataCollector implements LateDataCollectorInterface
024 {
025 protected $kernel;
026 protected $stopwatch;
027
028 public function __construct(KernelInterface $kernel = null, $stopwatch = null)
029 {
030 $this->kernel = $kernel;
031 $this->stopwatch = $stopwatch;
032 }
033
034 /**
035 * {@inheritdoc}
036 */
037 public function collect(Request $request, Response $response, \Exception $exception = null)
038 {
039 if (null !== $this->kernel) {
040 $startTime = $this->kernel->getStartTime();
041 } else {
042 $startTime = $request->server->get('REQUEST_TIME_FLOAT', $request->server->get('REQUEST_TIME'));
043 }
044
045 $this->data = array(
046 'token' => $response->headers->get('X-Debug-Token'),
047 'start_time' => $startTime * 1000,
048 'events' => array(),
049 );
050 }
051
052 /**
053 * {@inheritdoc}
054 */
055 public function lateCollect()
056 {
057 if (null !== $this->stopwatch && isset($this->data['token'])) {
058 $this->setEvents($this->stopwatch->getSectionEvents($this->data['token']));
059 }
060 unset($this->data['token']);
061 }
062
063 /**
064 * Sets the request events.
065 *
066 * @param array $events The request events
067 */
068 public function setEvents(array $events)
069 {
070 foreach ($events as $event) {
071 $event->ensureStopped();
072 }
073
074 $this->data['events'] = $events;
075 }
076
077 /**
078 * Gets the request events.
079 *
080 * @return array The request events
081 */
082 public function getEvents()
083 {
084 return $this->data['events'];
085 }
086
087 /**
088 * Gets the request elapsed time.
089 *
090 * @return float The elapsed time
091 */
092 public function getDuration()
093 {
094 if (!isset($this->data['events']['__section__'])) {
095 return 0;
096 }
097
098 $lastEvent = $this->data['events']['__section__'];
099
100 return $lastEvent->getOrigin() + $lastEvent->getDuration() - $this->getStartTime();
101 }
102
103 /**
104 * Gets the initialization time.
105 *
106 * This is the time spent until the beginning of the request handling.
107 *
108 * @return float The elapsed time
109 */
110 public function getInitTime()
111 {
112 if (!isset($this->data['events']['__section__'])) {
113 return 0;
114 }
115
116 return $this->data['events']['__section__']->getOrigin() - $this->getStartTime();
117 }
118
119 /**
120 * Gets the request time.
121 *
122 * @return int The time
123 */
124 public function getStartTime()
125 {
126 return $this->data['start_time'];
127 }
128
129 /**
130 * {@inheritdoc}
131 */
132 public function getName()
133 {
134 return 'time';
135 }
136 }
137