74 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * @package   FOF
 | |
|  * @copyright Copyright (c)2010-2021 Nicholas K. Dionysopoulos / Akeeba Ltd
 | |
|  * @license   GNU General Public License version 2, or later
 | |
|  */
 | |
| 
 | |
| namespace FOF30\Cli\Traits;
 | |
| 
 | |
| defined('_JEXEC') || die;
 | |
| 
 | |
| /**
 | |
|  * Memory statistics
 | |
|  *
 | |
|  * This is an optional trait which allows the developer to print memory usage statistics and format byte sizes into
 | |
|  * human-readable strings.
 | |
|  *
 | |
|  * @package FOF30\Cli\Traits
 | |
|  */
 | |
| trait MemStatsAware
 | |
| {
 | |
| 	/**
 | |
| 	 * Formats a number of bytes in human readable format
 | |
| 	 *
 | |
| 	 * @param   int  $size  The size in bytes to format, e.g. 8254862
 | |
| 	 *
 | |
| 	 * @return  string  The human-readable representation of the byte size, e.g. "7.87 Mb"
 | |
| 	 */
 | |
| 	protected function formatByteSize($size)
 | |
| 	{
 | |
| 		$unit = ['b', 'KB', 'MB', 'GB', 'TB', 'PB'];
 | |
| 
 | |
| 		return @round($size / 1024 ** ($i = floor(log($size, 1024))), 2) . ' ' . $unit[$i];
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the current memory usage, formatted
 | |
| 	 *
 | |
| 	 * @return  string
 | |
| 	 */
 | |
| 	protected function memUsage()
 | |
| 	{
 | |
| 		if (function_exists('memory_get_usage'))
 | |
| 		{
 | |
| 			$size = memory_get_usage();
 | |
| 
 | |
| 			return $this->formatByteSize($size);
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			return "(unknown)";
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Returns the peak memory usage, formatted
 | |
| 	 *
 | |
| 	 * @return  string
 | |
| 	 */
 | |
| 	protected function peakMemUsage()
 | |
| 	{
 | |
| 		if (function_exists('memory_get_peak_usage'))
 | |
| 		{
 | |
| 			$size = memory_get_peak_usage();
 | |
| 
 | |
| 			return $this->formatByteSize($size);
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			return "(unknown)";
 | |
| 		}
 | |
| 	}
 | |
| }
 |