2009-08-20 163 views
1

我需要從PHP執行TCL腳本。目前我使用以下代碼如何從php執行tcl腳本?

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

這是行得通的。但是這會爲每個呼叫創建一個shell。我如何打開一個shell並且從TCL腳本來回通信。任何指針將不勝感激。

問候, 大額牛

+0

我已經知道如何將值從php腳本傳遞到TCL腳本 passthru(「tclsh83 Testcases/source.tcl $ arg1 $ arg2」); //命令行參數 有更好的方法來執行TCL腳本嗎? 謝謝, Mithun – Vidya 2009-08-20 05:06:11

回答

0

如果你有大量的數據發送到TCL腳本,你可以打開閱讀並proc_open()寫管道。然後,在tcl腳本中,使用gets stdin varname從標準輸入讀取一行。

0

我認識了從PHP腳本值傳遞給TCL腳本中繼( 「tclsh83測試用例/ source.tcl $ ARG1 $ ARG2」)的方式; //命令行參數是否有更好的方法來執行TCL腳本?謝謝,大額牛

那麼,什麼是錯的這種方式?如果您始終只傳遞2個參數並且它們來自可信來源,那麼這是最好的方法。如果沒有,您可以有一個參數數組,使用escapeshellarg(),join()將它們轉義並將結果放入命令字符串中。例如:

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