【问题标题】:How to execute tcl script from php?如何从 php 执行 tcl 脚本?
【发布时间】:2009-08-24 21:11:41
【问题描述】:

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

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

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

问候, 米通

【问题讨论】:

  • 我知道了将值从 php 脚本传递到 TCL 脚本 passthru("tclsh83 Testcases/source.tcl $arg1 $arg2 "); // 命令行参数 有没有更好的方法来执行 TCL 脚本?谢谢,米通

标签: php tcl


【解决方案1】:

如果您有大量数据要发送到 tcl 脚本,您可以使用proc_open() 打开读写管道。然后,在 tcl 脚本中,使用gets stdin varname 从标准输入读取一行。

【讨论】:

    【解决方案2】:

    我知道了将值从 php 脚本传递到 TCL 脚本 passthru("tclsh83 Testcases/source.tcl $arg1 $arg2 "); // 命令行参数 有没有更好的方法来执行 TCL 脚本?谢谢,米通

    那么这种方式有什么问题呢?如果您始终只传递 2 个参数并且它们将来自受信任的来源,那么这是最好的方法。如果没有,你可以有一个参数数组,使用 escapeshellarg() 转义它们,join() 它们并将结果放入命令字符串。例如:

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

    【讨论】:

      最近更新 更多