Anzahl der Threads

Moin,
früher oder später bekommt vermutlich jeder die Meldung „zu viele gleichzeitig laufende Scripte“ und man soll die Maximalzahl in den Spezialschaltern ändern. Ich habe die Meldung natürlich auch bekommen und den Maximalwert auf 50 erhöht und habe Ruhe.

Da ich aber neugierig bin wollte ich wissen wie „schlimm“ es bei mir zu geht und habe ein kleines Script geschrieben das im Sekundenrythmus die Anzahl feststellt und den Maximalwert in eine Variable schreibt. Vielleicht kann es ja jemand brauchen also hier ist es:

<?php
// Lege Integervariable für MaxThreads an falls noch nicht vorhanden
$MaxThreadsID = @IPS_GetObjectIDByIdent("MaxThreads", $_IPS['SELF']);
if ($MaxThreadsID == false){
    $MaxThreadsID = IPS_CreateVariable(1);
    IPS_SetName($MaxThreadsID, "MaxThreads"); // Variable benennen
    IPS_SetParent($MaxThreadsID, $_IPS['SELF']); 
    IPS_SetIdent($MaxThreadsID, "MaxThreads"); 
    IPS_SetScriptTimer($_IPS['SELF'], 1);
}
$threadList = IPS_GetScriptThreadList();
$threadUsed = 0;
foreach ($threadList as $t => $i) {
    $thread = IPS_GetScriptThread($i);
    if ($thread['StartTime'] == 0) {
        continue;
    }
    $threadUsed++;
}
$MaxThreads = GetValue($MaxThreadsID);
if ($threadUsed > $MaxThreads) SetValue($MaxThreadsID, $threadUsed);
?>

Script einfach starten und es erstellt eine Variable als Kind und setzt einen Sekundentimer. Wenn man möchte das es nicht mehr zählt einfach den Timer deaktivieren.

Nach fast einem Tag lag das Maximum bei mir gerade bei 19 es geht also eher ruhig zu bei mir.

Vielleicht könnte man es noch erweitern. Wenn man Maximum auf 30 gestellt hat das man vielleicht bei 25 eine Warnung bekommt das man das Maximum vielleicht schon erhöht bevor IPS durch zu viele Scripte einfriert.

Ralf

50 ist doch der Default Wert. :slight_smile:
Michael

Inzwischen ja, früher war er 25 :wink: .