В предыдущих постах рассматривались варианты определения объема потребляемой PHP памяти — использование встроенных функций и скрипт -логер, выполняемый по окончании работы основного скрипта.
В данном случае предлагается третий метод, который подходит для использования только на linux системах, и только при возможности использования функции PHP exec().
<?php function get_top_memory_usage() { exec('top -b -n 1 -p ' . posix_getpid(), $ret); $ret = strtoupper(implode("\n", $ret)); $ret = explode("\n\n", $ret, 2); $ret = explode("\n", trim($ret[1])); $ret[0] = preg_replace('#^\s+#is', '', $ret[0]); $ret[1] = preg_replace('#^\s+#is', '', $ret[1]); $ret[0] = preg_split("#\s+#is", $ret[0]); $ret[1] = preg_split("#\s+#is", $ret[1]); $r = -1; foreach($ret[0] as $k=>$v) { if ($v=='RES' && isset($ret[1][$k])) { $r = trim($ret[1][$k]); break; } } if (substr_count($r,'M')>0) $k = 1024*1024; else $k = 1024; $r = preg_replace('#[^\d]+#is', '', $r) * $k; return $r; } echo get_top_memory_usage(); ?> |