Недоступна функция memory_get_usage()

Денч

Новичок
Недоступна функция memory_get_usage()

subj.
PHP 4.4.0. WinXP SP2
В мане сказано, что эта функция доступна только если PHP собран с включенной опцией --enable-memory-limit.

Я правильно понимаю, мне качать исходники php, и компилировать все самому?

Если так, то не подскажете, где можно ознакомиться с этим процессом поподробнее, и каким компилятором собирать?

Я в компиляторах С++ и его собратьях вообще не разбираюсь.
 

Vladson

Сильнобухер
Денч
Под Windows эта функция не работает, но в случае с XP есть выход

PHP:
<?php 
function getMemUsage() {
	$output = array();
	exec('tasklist /FI "PID eq ' . getmypid() . '" /FO LIST', $output); 
	return substr($output[5], strpos($output[5], ':') + 1);
}
?>
(взято из мануала, сам не проверял)
 

Денч

Новичок
надо было приписать, что примеры из комментов в мане я попробовал.
Они у меня не работают, кроме самого первого, с функцие array_size.
Может удастся подправить их, чтоб заработали, но пока лень...

Под Windows эта функция не работает
Значит, можно забыть про использование memory_get_usage() под WinXP? А жаль...
 

SiMM

Новичок
> (взято из мануала, сам не проверял)
Не удалось с консоли заставить с фильтром под XP работать, пришлось его рученьками организовать.
PHP:
function getMemUsage() {
    exec('tasklist /FO LIST', $output);
    foreach ($output as $k=>$v)
      if (strpos($v,'PID:')===0 && trim(substr($v,4))==getmypid())
        return trim(preg_replace('#^[^:]*:#s','',$output[$k+3]));
    return false;
}
 

Денч

Новичок
SiMM, спасибо.
Вот так думаю будет красивей
PHP:
function getMemUsage() 
{     
	exec('tasklist /FO LIST', $output);     
	foreach ($output as $k=>$v){
	if (strpos($v,'PID:')===0 && trim(substr($v,4))==getmypid())
		return iconv("CP866","cp1251",trim(preg_replace('#^[^:]*:#s','',$output[$k+3])));
	}
	return false; 
}
По крайней мере, нормально нарисовалось у меня только вот так.
 
Сверху