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.
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.
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.
Vielen Dank für die schnellen Antworten und auch den kleinen Mock, um zu versuchen, das Verhalten nachzustellen
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.