Dokumentation
UC_GetMessageSenderIDSizeList
array UC_GetMessageSenderIDSizeList (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 |
|---|---|---|
| SenderID | integer | ID des Objekts, das die Nachricht ausgelöst hat (0 = Kernel bzw. kein Objekt) |
| Size | integer | Aufsummierte Größe der Nachrichtendaten dieses Absenders in Bytes (Schätzwert) |
Beschreibung
Die Funktion summiert je Absender die Größe der Daten auf, die in seinen Nachrichten transportiert werden. Während UC_GetMessageSenderIDList nur die Anzahl der Nachrichten zählt, zeigt diese Liste, welche Objekte besonders große Datenmengen erzeugen, z.B. eine String-Variable, die häufig mit langen Texten aktualisiert wird.
Die Größe ist ein Schätzwert: Strings zählen mit ihrer Länge in Bytes, Integer und Float mit 8 Bytes und Boolean mit 1 Byte. Verwaltungsdaten der Nachricht selbst (Absender, Nachrichten-ID) werden nicht mitgezählt.
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 Absender mit der größten Datenmenge ausgeben
$list = UC_GetMessageSenderIDSizeList($id);
usort($list, function ($a, $b) {
return $b['Size'] <=> $a['Size'];
});
foreach (array_slice($list, 0, 3) as $entry) {
echo $entry['SenderID'] . ': ' . $entry['Size'] . ' Bytes' . PHP_EOL;
}
/* liefert z.B.:
10015: 1648 Bytes
10007: 729 Bytes
10008: 439 Bytes
*/