This is a simple example of a class, which can be used to collect the PHP script memory usage information and to print all information.
PHP Memory Usage - Class
<?php /* Online PHP Examples with Source Code website: http://4evertutorials.blogspot.in/ */ class MemoryUsageInformation { private $real_usage; private $statistics = array(); // Memory Usage Information constructor public function __construct($real_usage = false) { $this->real_usage = $real_usage; } // Returns current memory usage with or without styling public function getCurrentMemoryUsage($with_style = true) { $mem = memory_get_usage($this->real_usage); return ($with_style) ? $this->byteFormat($mem) : $mem; } // Returns peak of memory usage public function getPeakMemoryUsage($with_style = true) { $mem = memory_get_peak_usage($this->real_usage); return ($with_style) ? $this->byteFormat($mem) : $mem; } // Set memory usage with info public function setMemoryUsage($info = '') { $this->statistics[] = array('time' => time(), 'info' => $info, 'memory_usage' => $this->getCurrentMemoryUsage()); } // Print all memory usage info and memory limit and public function printMemoryUsageInformation() { foreach ($this->statistics as $satistic) { echo "Time: " . $satistic['time'] . " | Memory Usage: " . $satistic['memory_usage'] . " | Info: " . $satistic['info']; echo "\n"; } echo "\n\n"; echo "Peak of memory usage: " . $this->getPeakMemoryUsage(); echo "\n\n"; } // Set start with default info or some custom info public function setStart($info = 'Initial Memory Usage') { $this->setMemoryUsage($info); } // Set end with default info or some custom info public function setEnd($info = 'Memory Usage at the End') { $this->setMemoryUsage($info); } // Byte formatting private function byteFormat($bytes, $unit = "", $decimals = 2) { $units = array('B' => 0, 'KB' => 1, 'MB' => 2, 'GB' => 3, 'TB' => 4, 'PB' => 5, 'EB' => 6, 'ZB' => 7, 'YB' => 8); $value = 0; if ($bytes > 0) { // Generate automatic prefix by bytes // If wrong prefix given if (!array_key_exists($unit, $units)) { $pow = floor(log($bytes)/log(1024)); $unit = array_search($pow, $units); } // Calculate byte value by prefix $value = ($bytes/pow(1024,floor($units[$unit]))); } // If decimals is not numeric or decimals is less than 0 // then set default value if (!is_numeric($decimals) || $decimals < 0) { $decimals = 2; } // Format output return sprintf('%.' . $decimals . 'f '.$unit, $value); } } ?>
Usage of Class
<?php /* Online PHP Examples with Source Code website: http://4evertutorials.blogspot.in/ */ // Create new MemoryUsageInformation class $m = new MemoryUsageInformation(true); // Set start $m->setStart(); // Create example array $a = array(); // Set memory usage before loop $m->setMemoryUsage('Before Loop'); // Fill array with for($i = 0; $i < 100000; $i++) { $a[$i] = uniqid(); } // Set memory usage after loop $m->setMemoryUsage('After Loop'); // Unset array unset($a); // Set memory usage after unset $m->setMemoryUsage('After Unset'); // Set end $m->setEnd(); // Print memory usage statistics $m->printMemoryUsageInformation(); ?>
CHECK Output of PHP Memory class
0 comments:
Post a Comment