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