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
*/