PHP-Skript: Speicherauslastung ermitteln

Hallo Leute,

ich habe im Internet folgenden Code gefunden und ihn bei mir versucht „in Bewegung“ zu setzen.

<?

SetValueString(26742  /*[Sonstige Daten\Server-Daten\IPS-Server Daten\RAM-Nutzung]*/, mem());

function mem()
{
	if (function_exists('memory_get_usage'))
	{
		if ($memory_usage = memory_get_usage())
		{
		$memory_usage = ($memory_usage >= 1048576) ? round((round($memory_usage / 1048576 * 100) / 100), 2) . ' MB' : (($memory_usage >= 1024) ? round((round($memory_usage / 1024 * 100) / 100), 2) . ' KB' : $memory_usage . ' BYTES');
		$memory = ' | Memory Usage: ' . $memory_usage;
		return $memory;
		}
	}
}
echo mem();

?>

Die Funktion „memory_get_usage“ soll ab PHP Version 4.3.2 und in 5 funktionieren. Warum bekomme ich so kein Ergebnis?
Liegt es an der PHP Version oder muss die Funktion noch irgendwie „angeschoben“ werden?

Joachim

Weil PHP in IPS nicht mit --enable-memory-limit kompiliert worden ist. Das ist aber ab der 2.2 nicht mehr nötig, da dort mit PHP 5.3.1 der Parameter nicht mehr gebraucht wird.

Hallo Horst,

vielen Dank (abermals ;)) für Deine Antwort. Ich war irrtümlich davon ausgangen, dass das insgesamt verfügbare RAM geprüft wird - auf anderen Website fand ich dann die Information, dass es sich lediglich um die PHP-Speichernutzung handelt… (wenn ich es richtig verstanden habe…)

Von daher also doch nicht so interessant wir gedacht…:wink:

Joachim

Dann benutze doch IPS-Bordmittel:

print_r(Sys_GetMemoryInfo());

Hallo Horst,

ich habe eines Deiner anderen Skripte angepasst (ist gut zum Üben) und habe nun folgendes (funktionsfähiges!:D) herausbekommen (vielleicht interessiert es ja jemanden):

<?


$parentID = IPS_GetObject($IPS_SELF);
$parentID = $parentID['ParentID'];

$MemoryInfo = Sys_GetMemoryInfo();
 
SetValueString(CreateVariableByName($parentID, 'Physikalisch Speicher Verfügbar/Insgesamt', 3, '~String'), number_format($MemoryInfo['AVAILPHYSICAL']/ pow(1024, 2), 2, ',', '.').' MB / '.number_format($MemoryInfo['TOTALPHYSICAL']/ pow(1024, 2), 2, ',', '.').' MB');
SetValueString(CreateVariableByName($parentID, 'Zugesicherter Speicher Verfügbar/Grenzwert', 3, '~String'), number_format($MemoryInfo['AVAILVIRTUAL']/ pow(1024, 2), 2, ',', '.').' MB / '.number_format($MemoryInfo['TOTALVIRTUAL']/ pow(1024, 2), 2, ',', '.').' MB');

IPS_SetScriptTimer($IPS_SELF, 1*10);

function CreateVariableByName($id, $name, $type, $profile = "")
{
global $IPS_SELF;
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false)
{
	$vid = IPS_CreateVariable($type);
	IPS_SetParent($vid, $id);
	IPS_SetName($vid, $name);
	IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
   if($profile !== "")
	{
	IPS_SetVariableCustomProfile($vid, $profile);
	}
}
return $vid;
}


?>

Vielen Dank für die Unterstützung!

Joachim