Zu viele gleichzeitige Skripte. Verwerfe Ausführ

Das Script habe ich nun zyklisch laufen:


<?

$scriptName = IPS_GetName($_IPS['SELF']);

$now = time();

$threadList = IPS_GetScriptThreadList();

$s = '';
$threadCount = 0;

foreach ($threadList as $t => $i) {
    $thread = IPS_GetScriptThread ($i);

    $ScriptID = $thread['ScriptID'];
    if ($ScriptID == 0) {
        continue;
    }

    if ($ScriptID != $_IPS['SELF']) {
        $threadCount++;
    }
    $ScriptName = IPS_GetName($ScriptID);
	
    $ThreadId = $thread['ThreadID'];

    $StartTime = $thread['StartTime'];
    $sec = $now - $StartTime;
    $warn = $sec > 10 ? '!!!' : '';
    $duration = '';
    if ($sec > 3600) {
        $duration .= sprintf('%dh', floor($sec / 3600));
        $sec = $sec % 3600;
    }
    if ($sec > 60) {
        $duration .= sprintf('%dm', floor($sec / 60));
        $sec = $sec % 60;
    }
    if ($sec > 0 || $duration == '') {
        $duration .= sprintf('%ds', $sec);
        $sec = floor($sec);
    }

    $Sender = $thread['Sender'];
	
    $s .= "thread=$ThreadId, script=$ScriptName($ScriptID), sender=$Sender, duration=$duration $warn
";
}

if ($threadCount) {
    IPS_LogMessage($scriptName . '(' . $_IPS['SELF'] . ')', $s);
}

Es erzeugt eine Message, wenn mehr als dieses Script läuft; es wird die Dauer des Threads ausgegeben und ab 10s mit !!! markiert.

Natürlich erhöht dieses Script selbst die Menge der laufen Scripts, aber ein Problem sind ja eigentlich nur die Hänger.

1 „Gefällt mir“