« Zurück zu Produkt

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
*/
Haben Sie noch Fragen?