annotate vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
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@14 26 $this->reset();
Chris@0 27 }
Chris@0 28
Chris@0 29 /**
Chris@0 30 * {@inheritdoc}
Chris@0 31 */
Chris@0 32 public function collect(Request $request, Response $response, \Exception $exception = null)
Chris@0 33 {
Chris@0 34 $this->updateMemoryUsage();
Chris@0 35 }
Chris@0 36
Chris@0 37 /**
Chris@0 38 * {@inheritdoc}
Chris@0 39 */
Chris@14 40 public function reset()
Chris@14 41 {
Chris@17 42 $this->data = [
Chris@14 43 'memory' => 0,
Chris@14 44 'memory_limit' => $this->convertToBytes(ini_get('memory_limit')),
Chris@17 45 ];
Chris@14 46 }
Chris@14 47
Chris@14 48 /**
Chris@14 49 * {@inheritdoc}
Chris@14 50 */
Chris@0 51 public function lateCollect()
Chris@0 52 {
Chris@0 53 $this->updateMemoryUsage();
Chris@0 54 }
Chris@0 55
Chris@0 56 /**
Chris@0 57 * Gets the memory.
Chris@0 58 *
Chris@0 59 * @return int The memory
Chris@0 60 */
Chris@0 61 public function getMemory()
Chris@0 62 {
Chris@0 63 return $this->data['memory'];
Chris@0 64 }
Chris@0 65
Chris@0 66 /**
Chris@0 67 * Gets the PHP memory limit.
Chris@0 68 *
Chris@0 69 * @return int The memory limit
Chris@0 70 */
Chris@0 71 public function getMemoryLimit()
Chris@0 72 {
Chris@0 73 return $this->data['memory_limit'];
Chris@0 74 }
Chris@0 75
Chris@0 76 /**
Chris@0 77 * Updates the memory usage data.
Chris@0 78 */
Chris@0 79 public function updateMemoryUsage()
Chris@0 80 {
Chris@0 81 $this->data['memory'] = memory_get_peak_usage(true);
Chris@0 82 }
Chris@0 83
Chris@0 84 /**
Chris@0 85 * {@inheritdoc}
Chris@0 86 */
Chris@0 87 public function getName()
Chris@0 88 {
Chris@0 89 return 'memory';
Chris@0 90 }
Chris@0 91
Chris@0 92 private function convertToBytes($memoryLimit)
Chris@0 93 {
Chris@0 94 if ('-1' === $memoryLimit) {
Chris@0 95 return -1;
Chris@0 96 }
Chris@0 97
Chris@0 98 $memoryLimit = strtolower($memoryLimit);
Chris@0 99 $max = strtolower(ltrim($memoryLimit, '+'));
Chris@0 100 if (0 === strpos($max, '0x')) {
Chris@17 101 $max = \intval($max, 16);
Chris@0 102 } elseif (0 === strpos($max, '0')) {
Chris@17 103 $max = \intval($max, 8);
Chris@0 104 } else {
Chris@0 105 $max = (int) $max;
Chris@0 106 }
Chris@0 107
Chris@0 108 switch (substr($memoryLimit, -1)) {
Chris@0 109 case 't': $max *= 1024;
Chris@14 110 // no break
Chris@0 111 case 'g': $max *= 1024;
Chris@14 112 // no break
Chris@0 113 case 'm': $max *= 1024;
Chris@14 114 // no break
Chris@0 115 case 'k': $max *= 1024;
Chris@0 116 }
Chris@0 117
Chris@0 118 return $max;
Chris@0 119 }
Chris@0 120 }