Dokumentation
IPS_GetInstanceMessageStatistics
array IPS_GetInstanceMessageStatistics ()
Rückgabewert
Ein Array mit einem Eintrag je Instanz. Die Reihenfolge der Einträge ist nicht garantiert. Jeder Eintrag enthält folgende key => value Paare:
| Index | Typ | Beschreibung |
|---|---|---|
| InstanceID | integer | ID der empfangenden Instanz |
| Count | integer | Anzahl der verarbeiteten Nachrichten |
| Duration | integer | Gesamtdauer der Verarbeitung in Millisekunden |
| MaxDuration | integer | Längste Verarbeitung einer Nachricht in Millisekunden |
Beschreibung
Diese Funktion ist nur für den internen Gebrauch vorgesehen und kann sich jederzeit ohne Ankündigung ändern oder entfallen.
Die Funktion liefert die Statistik der Nachrichtenverarbeitung je Instanz. Erfasst wird, wie viele Nachrichten eine Instanz in ihrer MessageSink verarbeitet hat und wie lange dies gedauert hat. Die Werte werden seit dem Start von IP-Symcon aufsummiert, Dauern werden auf ganze Millisekunden abgerundet. Die aktuelle Anzahl der noch nicht verarbeiteten Nachrichten liefert IPS_GetInstanceMessageQueueSize.
Die Statistik wird nur erfasst, wenn der Spezialschalter "MessageQueueWatch" aktiviert ist (z.B. über IPS_SetOption). Andernfalls schlägt die Funktion mit "This function is only available if the special option 'MessageQueueWatch' is enabled!" fehl.
Ist "MessageQueueWatch" aktiviert, wird zusätzlich eine Meldung ins Log geschrieben, wenn die Verarbeitung einer Nachricht länger als "MessageQueueWatchLimit" Millisekunden dauert (0 = deaktiviert).
Beispiel
// Durchschnittliche Verarbeitungsdauer der Nachrichten je Instanz ausgeben
foreach (IPS_GetInstanceMessageStatistics() as $entry) {
printf("#%d: %d Nachrichten, %.1f ms im Schnitt, max. %d ms\n", $entry['InstanceID'], $entry['Count'], $entry['Duration'] / $entry['Count'], $entry['MaxDuration']);
}
/* liefert z.B.:
#23456: 1520 Nachrichten, 0.4 ms im Schnitt, max. 37 ms
*/