multimolti
Erfahrenes Mitglied
Hallo! (langer Text, wichtige Teile sind fett)
Ich weiß nicht, ob der Titel so viel sagt, daher beschreibe ich noch mal genau was ich möchte:
Person A hat ein großes CMS in PHP und möchte Person B, der aber nicht vertraut wird, die Möglichkeit geben, das CMS (das aber auf den Servern von A läuft) mit eigenen Scripts zu erweitern. Da es per PHP viel zu gefährlich wäre habe ich eine sichere Lua-Sandbox gebaut, die das Script von B ausführen kann ohne dass irgendwas kaputt gehen kann (kein IO, Laufzeitlimitierung, Speicherlimitierung, etc.). Soweit schön und gut, von PHP aus kann ich sagen "Starte tolles_script.lua und gib mir das Ergebnis", dann wird tolles_script.lua mit bestimmten Parametern ausgeführt und die Rückgabewerte an PHP zurückgegeben.
Das ganze System ist aber noch recht "unpraktisch". Von PHP aus hat man nur die Möglichkeit, das Script aufzurufen, außerdem wird bisher nicht sichergestellt, dass auch der richtige Datentyp reingeht. Und generell ist es nervig, die in Lua geschrieben Methode so aufrufen zu müssen (schematisch):
Das funktioniert, aber wenn ich es irgendwie hinbekommen könnte dass ich einfach tippe:
wäre das deutlich schöner und performanter =)
Habt ihr irgendeine Idee, wie ich das hinbekommen kann? Also dass sich der Aufruf einer Lua-Methode gefühlt kaum von dem einer PHP-Methode unterscheidet? (Die Funktion "verdoppeln" wäre bei Beispiel 2 in der MySQL-DB definiert).
Danke!!
Ich weiß nicht, ob der Titel so viel sagt, daher beschreibe ich noch mal genau was ich möchte:
Person A hat ein großes CMS in PHP und möchte Person B, der aber nicht vertraut wird, die Möglichkeit geben, das CMS (das aber auf den Servern von A läuft) mit eigenen Scripts zu erweitern. Da es per PHP viel zu gefährlich wäre habe ich eine sichere Lua-Sandbox gebaut, die das Script von B ausführen kann ohne dass irgendwas kaputt gehen kann (kein IO, Laufzeitlimitierung, Speicherlimitierung, etc.). Soweit schön und gut, von PHP aus kann ich sagen "Starte tolles_script.lua und gib mir das Ergebnis", dann wird tolles_script.lua mit bestimmten Parametern ausgeführt und die Rückgabewerte an PHP zurückgegeben.
Das ganze System ist aber noch recht "unpraktisch". Von PHP aus hat man nur die Möglichkeit, das Script aufzurufen, außerdem wird bisher nicht sichergestellt, dass auch der richtige Datentyp reingeht. Und generell ist es nervig, die in Lua geschrieben Methode so aufrufen zu müssen (schematisch):
PHP:
// code, return type
$script = new tcc_Lua_Script("function verdoppeln(x) return 2*x end", "int");
// parameter
$script->run(17);
$result = $script->getResult(); // $result = 34
PHP:
$result = _lua(verdoppeln(17)); // $result = 34
Habt ihr irgendeine Idee, wie ich das hinbekommen kann? Also dass sich der Aufruf einer Lua-Methode gefühlt kaum von dem einer PHP-Methode unterscheidet? (Die Funktion "verdoppeln" wäre bei Beispiel 2 in der MySQL-DB definiert).
Danke!!
Zuletzt bearbeitet: