« Zurück zu Produkt

Dokumentation

IPS_GetTraces

 array IPS_GetTraces (int $ObjektID) 

Parameterliste

ObjektID

ID des Objekts, dessen Traces geliefert werden sollen

Rückgabewert

Ein Array mit Trace-Einträgen. Die Reihenfolge der Einträge ist nicht garantiert. Jeder Eintrag enthält folgende Informationen als key => value Paare:

Index Typ Beschreibung
TraceID integer Eindeutige, fortlaufende ID des Eintrags
ParentID integer ID des Eintrags, der diesen Eintrag ausgelöst hat (0 = Anfang einer Kette)
ChildIDs array IDs der Einträge, die von diesem Eintrag ausgelöst wurden
Depth integer Position in der Kette, beginnend bei 1 (0 = Platzhalter für einen nicht mehr verfügbaren Eintrag)
ObjectID integer ID des Objekts, dem der Eintrag zugeordnet ist (1 = kein Objekt, z.B. bei WebServer)
Sender string Art des Eintrags (siehe Sendertabelle)
ExecutionUser string Benutzer, in dessen Namen ausgeführt wurde (z.B. @admin; @unknown, wenn kein Benutzer angemeldet war)
TimeStamp integer Unix Zeitstempel der Erstellung
Data array Zusätzliche Informationen als key => value Paare, abhängig vom Sender (siehe Sendertabelle)

Sendertabelle

Sender Beschreibung ObjectID Data
Variable Ein Wert wurde in eine Variable geschrieben (auch ohne Änderung) Variable VariableID, Value, OldValue
RequestAction Die Aktion einer Variable wurde angefordert Variable VariableID, ActionID, Value, Sender
RequestAction Die RequestAction-Funktion einer Instanz wurde für eine Statusvariable aufgerufen Instanz Ident, Value
TriggerEvent Ein ausgelöstes Ereignis führt seine Aktion aus Ereignis EventID, ActionID, Environment, Trigger, VariableID, Value
CyclicEvent Ein zyklisches Ereignis führt seine Aktion aus Ereignis EventID, ActionID, Environment
Script Ein Skript wird ausgeführt Skript Sender, ScriptID, FilePath, SenderID
Event PHP-Code wird im Auftrag eines Ereignisses ausgeführt Ereignis Sender, ScriptID, FilePath, SenderID
Instance PHP-Code wird für ein Zielobjekt ausgeführt Zielobjekt Sender, ScriptID, FilePath, SenderID
Timer Ein Timer einer Instanz wird ausgeführt Instanz TimerName, Instance, RunOnce
DataFlow Eine Instanz empfängt Daten über den Datenfluss empfangende Instanz InstanceID, ParentID
WebServer Eine Anfrage an den WebServer (Datei/Hook) oder ein JSON-RPC Aufruf 1 Path bzw. Method, RemoteIP, ProxyIPs (nur bei Proxys)
System Platzhalter für einen nicht mehr verfügbaren Eintrag 1 Reason

Beschreibung

Warning

Diese Funktion ist nur für den internen Gebrauch vorgesehen und kann sich jederzeit ohne Ankündigung ändern oder entfallen.

Der Kernel zeichnet in Traces auf, was was ausgelöst hat: Jeder Eintrag steht für einen Vorgang – z.B. das Schreiben einer Variable, das dadurch ausgelöste Ereignis, dessen Aktion bzw. Skript, ein RequestAction, einen Timer oder eine Anfrage an den WebServer – und verweist über ParentID auf den Eintrag, der ihn verursacht hat, sowie über ChildIDs auf die Einträge, die er selbst verursacht hat. So entsteht für jede Ursache ein Baum, mit dem sich nachvollziehen lässt, warum sich z.B. eine Variable geändert hat.

Die Funktion liefert alle aufbewahrten Einträge des Objekts ObjektID zusammen mit allen Einträgen ihrer Ursachenketten (Eltern, Großeltern, … bis zum Anfang der Kette). Einträge, die in mehreren Ketten vorkommen, sind nur einmal enthalten. Das Ergebnis ist eine flache Liste; die Baumstruktur lässt sich über TraceID, ParentID und ChildIDs wiederherstellen. Das Ergebnis entspricht somit IPS_GetTraceList für jede ID aus IPS_GetTraceIDList. Für ein Objekt ohne Traces wird ein leeres Array geliefert. Wird als ObjektID 1 übergeben, werden die Ketten aller aufbewahrten Einträge geliefert.

Warning

Die Funktion ist für den Abruf über die JSON-RPC Schnittstelle vorgesehen, z.B. für die Anzeige in der Konsole. In PHP-Skripten steht sie nicht zur Verfügung ("This function is not available for PHP") – dort kann das Ergebnis über IPS_GetTraceIDList und IPS_GetTraceList ermittelt werden.

Traces werden nur im Arbeitsspeicher gehalten und gehen bei einem Neustart verloren. Pro Objekt werden die letzten 25 Einträge aufbewahrt, für Einträge ohne Objekt (z.B. WebServer) insgesamt die letzten 1000. Ein älterer Eintrag bleibt so lange erhalten, wie noch ein aufbewahrter Eintrag von ihm abstammt, damit Ketten vollständig bleiben. Beim Löschen eines Objekts werden seine Einträge entfernt. Zeichenketten in Data werden auf 100 Bytes gekürzt und mit "..." markiert.

Warning

Ist eine Kette tiefer als 100 Einträge, geht der Kernel von einer Endlosschleife aus (z.B. ein Ereignis, das seine eigene Auslösevariable schreibt) und bricht den Vorgang mit "Insight trace depth exceeded 100. Assuming an endless loop. Aborting. Reverse Chain: …" ab.

Beispiel

$rpc = new JSONRPC("http://user:password@127.0.0.1:3777/api/");
print_r($rpc->IPS_GetTraces(10018));

/* liefert z.B.:
Array
(
    [0] => Array
        (
            [ChildIDs] => Array
            (
            )
            [Data] => Array
            (
                [OldValue] => 0
                [Value] => 5
                [VariableID] => 10018
            )
            [Depth] => 1
            [ExecutionUser] => @admin
            [ObjectID] => 10018
            [ParentID] => 0
            [Sender] => Variable
            [TimeStamp] => 1700000000
            [TraceID] => 1
        )
    [1] => Array
        (
            [ChildIDs] => Array
            (
            )
            [Data] => Array
            (
                [OldValue] => 5
                [Value] => 7
                [VariableID] => 10018
            )
            [Depth] => 1
            [ExecutionUser] => @admin
            [ObjectID] => 10018
            [ParentID] => 0
            [Sender] => Variable
            [TimeStamp] => 1700000000
            [TraceID] => 2
        )
)
*/
Haben Sie noch Fragen?