Process Info auslesen

Hi,

habe jetzt auch mal endlich auf die 2.5 umgestellt und bin gerade dabei gefühlte 1500 Scripte anzupassen (massig Altlasten noch aus der V1.0).

Im Moment hänge ich noch bei einem Script der Sprachausgabe über den VRDirect.

Hier habe ich vorher immer den Prozess mit den ToniTools überwacht und durch den RAM Verbrauch festgestellt, ob der Prozess noch aktiv ist oder weitere Meldungen nachgeschoben werden können.

Ich möchte das jetzt aber direkt über PHP lösen.

Gibt es irgend einen IPS oder PHP Befelt, mit welchem man die RAM oder CPU Auslastung eines Windowsprozesses auslesen kann.

Doku auf PHP.NET und hier brachte leider nicht die Erleuchtung.

Viele Grüße v. Doc

Tipp mal im Script, SYS + Space.

Hallo Rainer,

ich kann dir wie immer nicht ganz folgen … :wink:

Meinst du Sys+ CTRL&SPACE oder was genau?

SysGetProcessInfo hatte ich mir in der Doku schon angeschaut, da geht es ja lediglich nur um den IPS Process.

Gruss,
Doc

Unsichtbare Tinte. :smiley: STRG steht vor Space.

OK, wenn dir das nicht zusagt, warum nimmst Du dann nicht Tonistool.

Wenn ich schon dabei bin wollte ich mich auch gleich von den 3rd party Apps befreien.

Es muss doch von PHP aus eine Möglichkeit geben, an solche banalen Infos im Rechner ranzukommen?

TonisTools wurden mir nach dem Update auch als fehlerhaft angezeigt.

Gruesse Doc

Hallo Rainer,

wie kann ich den die Tonitools in der 2.5 einbinden?
Habe mal in den Moduls und Extensions Ordner getestet meine aber irgendwo gelesen zu haben, das da noch was angepasst werden musste.
Als Instancen sehe ich die nicht :confused:

Danke,
Doc

Warum, fragst Du mich, frag Toni. Zumal kenne ich die Tools nicht.

Na,
weil du die vorgeschlagen hast :smiley:

Doc

Hier habe ich vorher immer den Prozess mit den ToniTools überwacht und durch den RAM Verbrauch festgestellt…

Alles klar. Einer muss es ja gewesen sein. :smiley:

Ich hab aufgrund der mittlerweile geringen Nachfrage keine Arbeit mehr in das Projekt gesteckt. Viele Funktionen der Tonitools sind ja heute auch schon nativ in IPS verfügbar. Wenn da Bedarf besteht mach doch mal einen Thread auf in dem Funktionswünsche gesammelt werden können. Die Quellcodes hab ich alle noch. Es müsste zu Gunsten der Stabilität aber mal alter Schrott ausgemistet werden.

Toni

Hallo Doc,

das ist aber nicht die Aufgabe eines Webservers. :wink:
Es gibt aber eine Lösung per WMI.

Hier ein Codeschnipsel:


$process = "ips.exe";
exec("wmic process WHERE Name=\"$process\" get caption,WorkingSetSize",$result); //Virtual memory size / Arbeitssatz (Speicher)
print_r ($result);

Falls die WMI-Konsole noch nicht im Einsatz war, wird wmic beim ersten Aufruf automatisch installiert/initialisiert. In diesem Fall musst Du einfach nach der Installation nochmal das Script starten.

Die entsprechende Auswertung ist dann noch eine kleine Fleißaufgabe für Dich! :smiley:

Schöne Grüße und viel Erfolg
Roland

Hallo,

könnte man damit auch die Ereignisanzeige auslesen? Ich meine mal irgendwo so etwas gelesen zu haben.
Dann könnte man sich ja über Fehler auf Betriebssystemebene informieren lassen.

Hallo Horst,

ja, das geht auch.


exec("wmic NTEVENT where \"LogFile='system' AND TimeGenerated > '20120809173000.000000+120'\"  GET TimeGenerated, Type, Message",$result);

YYYYMMDDHHmmSS.uuuuuu-ZZZ (uuuuu = Microsecond | ZZZ Timezone-Offset in Minuten | Rest ist selbsterklärend)
Unter Umständen kann die Abfrage sehr lange dauern und dementsprechend viel Output generieren. Irgendwo stösst dann IPS an seine Grenzen. Also aufpassen und notfalls die Abfrage in eine Datei umleiten… :wink:

Schöne Grüße
Roland

Danke Ronald,
werde mal sehen ob ich dass hinkomme. Würde es gerne in eine variable schreiben und im WF darstellen.

GeTapatalk(t) mit meinem Galaxy Tab 10.1N

Hallo Roland,

danke fuer die Info. Werde ich morgen mal testen, ob ich damit das gewuenschte Ergebnis erzielen kann.
Mir geht es nur darum zu sehen, ob das Speach Modul noch läuft oder nicht und das war über den Speicher eine gute Möglichkeit. Bin mal gespannt, ob das damit auch funktiniert, wäre super.

@Toni
Ich habe eigentlich nur noch die Processinfo von den Tool benutzt. An alles andere war ja auch anders herran zu kommen.
Ich glaube nicht das es nötig ist, das du hier noch weiter Energie reinsteckst.
Es sei denn, es klappt nicht so, wie von Roland beschrieben.
Ich werde berichten.

Danke euch, Gruss Doc

Hallo Roland,

habe es mal so ausprobiert, läuft super.

$process = "VRDirect.exe";
exec("wmic process WHERE Name=\"$process\" get caption,WorkingSetSize",$result); //Virtual memory size / Arbeitssatz (Speicher)
$RAM = (int)str_replace(" ","",(str_replace($process,"",$result[1])));
print_r ($RAM);

Ich weiss nicht ob der eine oder andere evtl. auch noch die Sprachausgabe über VRDirect benutzt.
Die Sprache ist eigentlich sehr klar und deutlich aber nicht direkt als TTS zu verwenden.
Aber über diesen Umweg geht es und bei neuen Ansagen während eine andere läuft wird diese nicht abgebrochen sondern anschliessend danach ausgegeben.

Vllt. kanns wer gebrauchen

Gruss Doc

/*
Variable Speak wird gequeued und nacheinander in Speak_now geschrieben, wo sie dann
durch dieses Sprachscript Speak_Queue ausgegeben wird, bis die Queue leer ist.
*/

$Var_ID_Speak_new = 51916 /*[Programme\Sound\Speak SK1\Speak\Speak]*/;
$Var_ID_Speak_Queue = 17702 /*[Programme\Sound\Speak SK1\Speak\Speak_Queue]*/;
$Var_ID_Status_Instance = 55349 /*[Programme\Sound\Speak SK1\Media Player Speak SK1\Status]*/;
$Var_ID_Speak_Var = 33558 /*[Programme\Sound\Speak SK1\Speak\Speak_now]*/;

// Meldung hinzufügen
if ($_IPS['SENDER'] == "Variable"){
   if ($_IPS['VARIABLE'] == $Var_ID_Speak_new){
		$Speak_new = GetValueString($Var_ID_Speak_new);
		$Speak_to_add = $Speak_new."
";
		$Speak_Queue = GetValueString($Var_ID_Speak_Queue);
		$Speak_all = $Speak_Queue.$Speak_to_add;
		SetValueString($Var_ID_Speak_Queue, $Speak_all);
      IPS_SetScriptTimer($_IPS['SELF'], 1);
	}
}
//-----------------------------------------------------------------------

if ($_IPS['SENDER'] == "TimerEvent"){

// Meldungen zählen
$Speak_all = GetValueString($Var_ID_Speak_Queue);
$Speak_chunk = explode("
", $Speak_all);
$amount_Speak = count($Speak_chunk) - 1;

//$Status = GetValueInteger($Var_ID_Status_Instance);  //von TTS Engine // aus altem Script über TTS (Altlast)

// Process Zustand VRDirect auslesen
$process = "VRDirect.exe";
exec("wmic process WHERE Name=\"$process\" get caption,WorkingSetSize",$result); //Virtual memory size zur Kontrolle ob VRDirect nocht läuft
$RAM = (int)str_replace(" ","",(str_replace($process,"",$result[1])));

IPS_Sleep(100); //für VRDirect
if ($RAM < 20000000) {
	$Status = 3;
	} else {
	$Status = 0;
}

if ($amount_Speak > 0) {
	if ($Status == 3){
//		SetValueString($Var_ID_Speak_Var, $Speak_chunk[0]); //von TTS Engine
      IPS_ExecuteEx("C:/IPS2/doVoice.exe" , "$Speak_chunk[0]",false,false,1); // Zeile für den VRDirekt Dienst
		unset ($Speak_chunk[0]);
		$Speak_all = array_merge($Speak_chunk);
		$Speak_all = implode("
", $Speak_all);
		SetValueString($Var_ID_Speak_Queue, $Speak_all);
	}else{
      IPS_SetScriptTimer($_IPS['SELF'], 2);
	}
}else{
   IPS_SetScriptTimer($_IPS['SELF'], 0);
	}
}