2009-08-20 6 views
1

Ich muss ein TCL-Skript von PHP ausführen. Im Moment verwende ich den folgenden CodeWie tcl Skript von PHP ausführen?

<?php 
echo passthru("tclsh83 Testcases/source.tcl "); 
?> 

Dies funktioniert. Dadurch wird jedoch für jeden Aufruf eine Shell erstellt. Wie öffne ich eine Shell und kommuniziere vom TCL-Skript hin und her? Irgendwelche Hinweise werden geschätzt.

Grüße, Mithun

+0

Ich habe die Art und Weise kennengelernt, Werte von PHP-Skript an TCL-Skript übergeben passthru ("tclsh83 Testcases/source.tcl $ arg1 $ arg2"); // Befehlszeilenargumente Gibt es eine bessere Möglichkeit, das TCL-Skript auszuführen? Danke, Mithun – Vidya

Antwort

0

Wenn Sie viele Daten an den tcl-Skript zu senden, könnten Sie öffnen lesen und schreiben Rohre mit proc_open(). Verwenden Sie dann im tcl-Skript gets stdin varname, um eine Zeile von stdin zu lesen.

0

Ich habe den Weg wissen, Werte von den PHP-Skript zu TCL Skript passthru ("tclsh83 Testfälle/source.tcl $ arg1 $ arg2") zu übergeben; // Befehlszeilenargumente Gibt es eine bessere Möglichkeit, das TCL-Skript auszuführen? Danke, Mithun

Also, was ist falsch über diesen Weg? Es ist der beste Weg, wenn Sie immer nur 2 Parameter übergeben und sie werden von einer vertrauenswürdigen Quelle stammen. Wenn nicht, können Sie ein Array von Parametern haben, diese mit escapeshellarg() umgehen, sie mit Join() verbinden und das Ergebnis in die Befehlszeichenfolge einfügen. Zum Beispiel:

$params = array(/* <...> */); 
echo passthru('tclsh83 Testcases/source.tcl ' . 
       join(' ', array_map('escapeshellarg', $params)));