Определение потребления памяти PHP скриптом — Часть 3

В предыдущих постах рассматривались варианты определения объема потребляемой 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();
 
?>

Similar Posts:

Запись опубликована в рубрике Трюки на PHP с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий