1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<?php
if( !defined( 'ABSPATH') ) exit();
class RevSliderMemoryUsageInformation {
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(), //microtime(), 'info' => $info, 'memory_usage' => $this->getCurrentMemoryUsage()); }
// Print all memory usage info and memory limit and public function printMemoryUsageInformation() { //return true; echo '<pre>'; 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"; echo '</pre>'; }
// 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); }
}
|