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.
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
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.
das ist aber nicht die Aufgabe eines Webservers.
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!
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.
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…
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.
$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);
}
}