« Zurück zu Produkt

Dokumentation

UC_GetMessageSenderIDList

 array UC_GetMessageSenderIDList (int $InstanzID) 

Parameterliste

InstanzID

ID zum Util Control

Rückgabewert

Ein Array mit einem Eintrag je Absender, der seit dem Start eine Nachricht versendet hat. Jeder Eintrag enthält folgende key => value Paare:

Index Typ Beschreibung
Count integer Anzahl der Nachrichten dieses Absenders
SenderID integer ID des Objekts, das die Nachricht ausgelöst hat (0 = Kernel bzw. kein Objekt)

Beschreibung

Die Funktion zählt alle Nachrichten, die der Kernel verteilt, getrennt nach dem Absender. Absender ist das Objekt, auf das sich die Nachricht bezieht, z.B. die Variable bei einer Variablenaktualisierung oder die Instanz bei einer Statusänderung. So lassen sich Objekte finden, die ungewöhnlich viele Nachrichten erzeugen, z.B. eine Variable, die mehrmals pro Sekunde aktualisiert wird. Die Datenmenge je Absender liefert UC_GetMessageSenderIDSizeList, die Verteilung auf die Nachrichtentypen UC_GetMessageTypeList.

Die Werte werden im Arbeitsspeicher seit dem Start von IP-Symcon aufsummiert und können nicht zurückgesetzt werden (erst ein Neustart beginnt wieder bei 0). Die Reihenfolge der Einträge ist nicht festgelegt.

Die ID der Util Control Instanz liefert z.B. IPS_GetInstanceListByModuleID mit der Modul-GUID {B69010EA-96D5-46DF-B885-24821B8C8DBD}. Existiert InstanzID nicht, schlägt die Funktion mit "Instance #... does not exist" fehl, gehört die Instanz zu einem anderen Modul, mit "Instance does not implement this function".

Beispiel

// ID der Util Control Instanz ermitteln
$id = IPS_GetInstanceListByModuleID('{B69010EA-96D5-46DF-B885-24821B8C8DBD}')[0];

// Die drei aktivsten Absender ausgeben
$list = UC_GetMessageSenderIDList($id);
usort($list, function ($a, $b) {
    return $b['Count'] <=> $a['Count'];
});
foreach (array_slice($list, 0, 3) as $entry) {
    echo $entry['SenderID'] . ': ' . $entry['Count'] . PHP_EOL;
}

/* liefert z.B.:
0: 26
10008: 25
10012: 11
*/
Haben Sie noch Fragen?