IPS_RunScriptWait(Ex) gibt keine Werte zurück, beim Aktionstyp "Führe PHP Code aus"

@Symcon
Ich habe ja heute mal wieder ein wenig mit Ereignissen herum hantiert und dabei ist mir aufgefallen,
dass ich, wenn ich dort IPS_RunScriptWait(Ex) verwende, dass dann der Returnwert aus der aufgerufenen
Funktion nicht zurückgegeben wird.

Vielleicht nur eine bekannte Einschränkung, vielleicht aber auch ein Fehler?

Aufbau etwa so:
IPS-Ereignis-IPS_RunScriptWait.PNG

$objid ist immer leer.
Meine Funktion zum testen ‚test-ereignis‘ beinhaltete nur ein
return „Test“;

Gruß
Gollum

Bin nicht Symcon, antworte dennoch :smiley:
Nimm anstatt
Return ‚Test‘;
Echo ‚Test‘;

Michael
PS: So viel Code würde ich nie in ein Ereignis packen, das findet man (im Fehlerfall) schwer wieder.

@Nall-chan
Vielen Dank für die Antwort!

@Paresy
Aber ich muss dennoch noch einmal nachhaken.
Ich habe das gleiche Problem nun ebenfalls in einem Action Script.
Ich rufe von dort eine Funktion auf und erwarte einen String als Rückgabe.
Die Funktion wird ausgeführt! Das weiß ich weil unten im Code Editor die erzeugte Ausgabe angezeigt wird!

Aber egal was ich auch versuche, es erfolgt keine Rückgabe des Ergebniswertes.
Auch nicht wenn ich versuche, das Ergebnis in einen Call by Reference Parameter ‚zurückzugeben‘.

Daher noch einmal meine Frage, gibt es bekannte Beschränkungen im IPS die dies verhindern?

Gruß

Gollum

Include ist was ganz anderes.
Schau dir die PHP Doku zu include und die IPS Doku zu RunScript an.
Das erste inkludiert den Code aus der Datei in das aktuelle Script (Es läuft also nur ein Script-Thread).
Die IPS Funktion startet das angegebene Script in einem eigenen PHP-Thread.
Somit nicht vergleichbar.
Michael

@Nall-chan
Ok du hast sicher Recht, andere Situation. Ich hätte ggf. einen neuen Thread aufmachen sollen!

Ok ansonsten ist die Vorgehensweise in der Doku so angegeben.

Und es bleibt dabei. Ein ‚return‘ funktioniert nicht.

Gruß

Gollum

Wo?
Bei RunScript? Ja, ist auch richtig. Da nicht der gleiche PHP Thread.
Hier geht das nur über die Ausgabe von Scripten.
Michael

Hier habe ich das gefunden:

Was willst du denn genau erreichen? Eine Funktion an verschiedenen Stellen nutzen?

Dann lagert man die Funktion in eine Datei aus und inkludiert die Datei.

Vielleicht schilderst du dein Vorhaben noch etwas mehr.

@bumas

Eine Funktion an verschiedenen Stellen nutzen?

Dann lagert man die Funktion in eine Datei aus und inkludiert die Datei.

Genau das wollte ich machen und habe es auch getan. In meiner Datei befindet sich eine Funktion, deren Aufruf ja auch funktioniert.
Sie wird ausgeführt.Soweit also alles bestens!

Nur der ‚return‘ Wert aus der Funktion kommt nicht zur Aufrufstelle zurück. Das ist das Problem.

Und daher meine Frage, ob es sich um eine bekannte Einschränkung seites IPS handelt.

Danke für euer Bemühen!

Gruß

Gollum

Wenn du die Datei inkludiert hast, rufst du die Funktion über ihren Namen auf. Dann bekommst du auch den Return.

Sonst zeig mal deinen Codeschnipsel.

Du hast dann aber auch schon Return und nicht Echo bei der Funktion in der Include Datei benutzt?!
Michael

Hatte ein printf anstatt sprintf verwendet! Es konnte also nichts in der Variablen sein, die ich zurückgebe.

$erg = printf… anstatt $erg = sprintf…

Und ich hatte mich schon gewundert, wieso die Ergebnisse unten in der Consolen Ausgabe angezeigt wurden!:banghead:

Es funktioniert also tatsächlich wie vorgesehen. Dieser blöde Wald vor Bäumen immer…

Entschuldigung an alle, die sich an so einem schönen Tag um Hilfe und Aufklärung bemüht haben!

Gruß

Gollum