2009-08-20 5 views
1

Мне нужно выполнить скрипт TCL из PHP. В настоящий момент я использую следующий код:Как выполнить скрипт tcl из php?

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

Это работает. Но это создает оболочку для каждого вызова. Как открыть оболочку и обмениваться сообщениями с помощью сценария TCL. Любые указатели будут оценены.

С уважением, Митхун

+0

Я узнал способ передачи значений из скрипта php в сценарий TCL passthru ("tclsh83 Testcases/source.tcl $ arg1 $ arg2"); // аргументы командной строки Есть ли лучший способ выполнить сценарий TCL? Спасибо, Mithun – Vidya

ответ

0

Если у вас есть много данных для передачи в сценарий TCL, вы можете открыть читать и писать трубы с proc_open(). Затем в сценарии tcl используйте gets stdin varname, чтобы прочитать строку из stdin.

0

Я должен знать, как передать значения из PHP скрипта TCL скрипт PASSTHRU ("tclsh83 Testcases/source.tcl $ arg1 $ arg2"); // аргументы командной строки Есть ли лучший способ выполнить TCL-скрипт? Спасибо, Mithun

Так что же не так? Это лучший способ, если вы всегда будете передавать только 2 параметра, и они будут из надежного источника. Если нет, вы можете иметь массив параметров, избегая их с помощью escapeshellarg(), join() и помещая результат в командную строку. Например:

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