如何从php执行tcl脚本?

如何从php执行tcl脚本?,php,tcl,Php,Tcl,我需要从PHP执行一个TCL脚本。目前,我正在使用以下代码 <?php echo passthru("tclsh83 Testcases/source.tcl "); ?> 这是有效的。但这会为每个调用创建一个shell。如何打开shell并从TCL脚本来回通信。任何指点都将不胜感激 问候,, 密顿 我了解了如何将值从php脚本传递到TCL脚本passthru(“tclsh83 Testcases/source.TCL$arg1$arg2”);//命令行参数有更好的方法来执行

我需要从PHP执行一个TCL脚本。目前,我正在使用以下代码

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

这是有效的。但这会为每个调用创建一个shell。如何打开shell并从TCL脚本来回通信。任何指点都将不胜感激

问候,, 密顿


我了解了如何将值从php脚本传递到TCL脚本passthru(“tclsh83 Testcases/source.TCL$arg1$arg2”);//命令行参数有更好的方法来执行TCL脚本吗?谢谢你,Mithun

那么这种方式有什么不对呢?如果您总是只传递2个参数,并且这些参数来自受信任的源,那么这是最好的方法。如果没有,您可以拥有一个参数数组,使用escapeshellarg()对其进行转义,将其连接()并将结果放入命令字符串中。例如:

$params = array( /* <...> */ );
echo passthru('tclsh83 Testcases/source.tcl ' .
              join(' ', array_map('escapeshellarg', $params)));
$params=array(/**/);
echo passthru('tclsh83测试用例/source.tcl'。
连接(“”,数组映射('escapeshellarg',$params));

如果有大量数据要发送到tcl脚本,可以使用
proc\u open()
打开读写管道。然后,在tcl脚本中,使用
获取stdin varname
从stdin读取一行。

我了解了如何将值从php脚本传递到tcl脚本passthru(“tclsh83 Testcases/source.tcl$arg1$arg2”);//命令行参数有更好的方法来执行TCL脚本吗?谢谢你,Mithun