annotate vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php @ 2:92f882872392

Trusted hosts, + remove migration modules
author Chris Cannam
date Tue, 05 Dec 2017 09:26:43 +0000
parents 4c8ae668cc8c
children 1fec387a4317
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of the Symfony package.
Chris@0 5 *
Chris@0 6 * (c) Fabien Potencier <fabien@symfony.com>
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Symfony\Component\HttpKernel\DataCollector;
Chris@0 13
Chris@0 14 use Symfony\Component\HttpFoundation\Request;
Chris@0 15 use Symfony\Component\HttpFoundation\Response;
Chris@0 16
Chris@0 17 /**
Chris@0 18 * MemoryDataCollector.
Chris@0 19 *
Chris@0 20 * @author Fabien Potencier <fabien@symfony.com>
Chris@0 21 */
Chris@0 22 class MemoryDataCollector extends DataCollector implements LateDataCollectorInterface
Chris@0 23 {
Chris@0 24 public function __construct()
Chris@0 25 {
Chris@0 26 $this->data = array(
Chris@0 27 'memory' => 0,
Chris@0 28 'memory_limit' => $this->convertToBytes(ini_get('memory_limit')),
Chris@0 29 );
Chris@0 30 }
Chris@0 31
Chris@0 32 /**
Chris@0 33 * {@inheritdoc}
Chris@0 34 */
Chris@0 35 public function collect(Request $request, Response $response, \Exception $exception = null)
Chris@0 36 {
Chris@0 37 $this->updateMemoryUsage();
Chris@0 38 }
Chris@0 39
Chris@0 40 /**
Chris@0 41 * {@inheritdoc}
Chris@0 42 */
Chris@0 43 public function lateCollect()
Chris@0 44 {
Chris@0 45 $this->updateMemoryUsage();
Chris@0 46 }
Chris@0 47
Chris@0 48 /**
Chris@0 49 * Gets the memory.
Chris@0 50 *
Chris@0 51 * @return int The memory
Chris@0 52 */
Chris@0 53 public function getMemory()
Chris@0 54 {
Chris@0 55 return $this->data['memory'];
Chris@0 56 }
Chris@0 57
Chris@0 58 /**
Chris@0 59 * Gets the PHP memory limit.
Chris@0 60 *
Chris@0 61 * @return int The memory limit
Chris@0 62 */
Chris@0 63 public function getMemoryLimit()
Chris@0 64 {
Chris@0 65 return $this->data['memory_limit'];
Chris@0 66 }
Chris@0 67
Chris@0 68 /**
Chris@0 69 * Updates the memory usage data.
Chris@0 70 */
Chris@0 71 public function updateMemoryUsage()
Chris@0 72 {
Chris@0 73 $this->data['memory'] = memory_get_peak_usage(true);
Chris@0 74 }
Chris@0 75
Chris@0 76 /**
Chris@0 77 * {@inheritdoc}
Chris@0 78 */
Chris@0 79 public function getName()
Chris@0 80 {
Chris@0 81 return 'memory';
Chris@0 82 }
Chris@0 83
Chris@0 84 private function convertToBytes($memoryLimit)
Chris@0 85 {
Chris@0 86 if ('-1' === $memoryLimit) {
Chris@0 87 return -1;
Chris@0 88 }
Chris@0 89
Chris@0 90 $memoryLimit = strtolower($memoryLimit);
Chris@0 91 $max = strtolower(ltrim($memoryLimit, '+'));
Chris@0 92 if (0 === strpos($max, '0x')) {
Chris@0 93 $max = intval($max, 16);
Chris@0 94 } elseif (0 === strpos($max, '0')) {
Chris@0 95 $max = intval($max, 8);
Chris@0 96 } else {
Chris@0 97 $max = (int) $max;
Chris@0 98 }
Chris@0 99
Chris@0 100 switch (substr($memoryLimit, -1)) {
Chris@0 101 case 't': $max *= 1024;
Chris@0 102 case 'g': $max *= 1024;
Chris@0 103 case 'm': $max *= 1024;
Chris@0 104 case 'k': $max *= 1024;
Chris@0 105 }
Chris@0 106
Chris@0 107 return $max;
Chris@0 108 }
Chris@0 109 }