IPS_RunScript bringt $_IPS['SELF'] Variable durcheinander?

Hallo zusammen,

ich debugge mal seit einiger Zeit an einem Verhalten meines Systems und bin nun an wieder an einer Stelle angekommen, an der ich weitere Hilfe benötige.

Das Vorhaben:
In einem übergeordneten Skript möchte ich mehrere Skripte mittels IPS_RunScript() starten.
image

Innerhalb dieser Skripte wird mehrfach auf die Variable des aufrufenden Skriptes $_IPS['SELF'] verwendet.

Das Problem
Führe ich die Skripte synchron mittels IPS_RunScriptWait() aus, passt soweit alles und die Variable $_IPS['SELF'] entspricht dem jeweils untergeordneten Skript, welches gestartet wurde.

Führe ich die Skripte jedoch asynchron mittels IPS_RunScript() aus durchmischt sich die Variable $_IPS['SELF'] willkürlich und nimmt an verschiedenen Stellen diverse Werte von untergeordneten Skripten, aber auch vom übergeordneten Skript an.

Folglich referenzieren meine untergeordneten Skripte dann auf die falschen Skript-IDs und es entsteht ein mächtiges Chaos.

Könnt ihr euch dieses Verhalten erklären oder ist dies eventuell sogar gewünscht? In der Dokumentation konnte ich bisher nur herausfinden, dass die Skripte mittels IPS_RunScript() in einem eigenen Kontext gestartet werden und damit eigentlich auch eigene Systemvariablen erhalten sollten.

Danke für eure Hilfe!

Viele Grüße,
bition

Ich kann es hier nicht nachstellen:
grafik

Das Skript 53760 hat einfach nur folgenden Inhalt:

IPS_RunScript(57043);
IPS_RunScript(50903);
IPS_RunScript(14550);
IPS_RunScript(52180);

Und die einzelnen Skripte haben folgenden Inhalt:

IPS_LogMessage("RunScript", "ID: 57043 | Systemvariable: " . $_IPS['SELF']);

Im Meldungsfenster erscheint es korrekt:

Getestet auf einer frischen SymBox mit letztem Stable Updatestand.

Ich hatte bition so verstanden, dass das $_IPS['SELF'] im Hauptscript genutzt wird, welches die anderen Skripte aufruft.
Du hattest das $_IPS['SELF'] bei deinem Test aber nur in den Unterskripten genutzt, oder?

Edit:
Ich habe deinen Versuchsaufbau gerade auch mal getestet und die Variable aus dem Hauptskript heraus ausgegeben. Auch da passt bei mir alles, selbst wenn ich Verzögerungen in die einzelnen Skripte einbaue, sodass sie alle parallel laufen.

Ja, richtig.

Auch das passt hier.

Vielen Dank für die schnellen Antworten und auch den kleinen Mock, um zu versuchen, das Verhalten nachzustellen :+1:

Ich habe den Mock bei mir auch einmal gebaut und kann auch sagen, dass hier soweit alles korrekt funktioniert. Ich werde dann mal weiter meine etwas komplexeren Skripte debuggen und schauen, was da eventuell noch schief läuft.

Danke und viele Grüße,
bition