2009-08-20 162 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)));