Dokumentation
IPS_GetInstanceDataFlowStatistics
array IPS_GetInstanceDataFlowStatistics ()
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 sendenden Instanz |
| TxCount | integer | Anzahl der an die übergeordnete Instanz gesendeten Daten |
| TxDuration | integer | Gesamtdauer der Verarbeitung in der übergeordneten Instanz in Millisekunden |
| TxMaxDuration | integer | Längste Verarbeitung in der übergeordneten Instanz in Millisekunden |
| RxCount | integer | Anzahl der Zustellungen an untergeordnete Instanzen |
| RxDuration | integer | Gesamtdauer der Verarbeitung in den untergeordneten Instanzen in Millisekunden |
| RxMaxDuration | integer | Längste Verarbeitung in einer untergeordneten Instanz 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 des Datenflusses je Instanz. Tx erfasst die Daten, die eine Instanz an ihre übergeordnete Instanz sendet, und die Dauer, bis diese die Daten verarbeitet hat. Rx erfasst die Daten, die eine Instanz an ihre untergeordneten Instanzen sendet, und die Dauer, bis diese die Daten verarbeitet haben. Dabei wird jede Zustellung an eine untergeordnete Instanz einzeln gezählt. Die Werte werden seit dem Start von IP-Symcon aufsummiert, Dauern werden auf ganze Millisekunden abgerundet.
Die Statistik wird nur erfasst, wenn der Spezialschalter "DataFlowWatch" aktiviert ist (z.B. über IPS_SetOption). Andernfalls schlägt die Funktion mit "This function is only available if the special option 'DataFlowWatch' is enabled!" fehl.
Ist "DataFlowWatch" aktiviert, wird zusätzlich eine Meldung ins Log geschrieben, wenn eine Verarbeitung länger als "FlowWatchTxLimit" bzw. "FlowWatchRxLimit" Millisekunden dauert (0 = deaktiviert).
Beispiel
// Instanzen mit der längsten Verarbeitung im Datenfluss ausgeben
$statistics = IPS_GetInstanceDataFlowStatistics();
usort($statistics, function ($a, $b) {
return ($b['TxDuration'] + $b['RxDuration']) <=> ($a['TxDuration'] + $a['RxDuration']);
});
foreach (array_slice($statistics, 0, 3) as $entry) {
printf("#%d: Tx %d (%d ms), Rx %d (%d ms)\n", $entry['InstanceID'], $entry['TxCount'], $entry['TxDuration'], $entry['RxCount'], $entry['RxDuration']);
}
/* liefert z.B.:
#23456: Tx 120 (845 ms), Rx 5310 (2210 ms)
#34567: Tx 0 (0 ms), Rx 2655 (512 ms)
*/