如何从 php 执行 tcl 脚本?

发布于 2024-08-02 13:07:22 字数 214 浏览 5 评论 0原文

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

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

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

问候, 米敦

I need to execute a TCL script from PHP. At the moment I am using the following code

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

This is working. But this creates a shell for each call . How do I open a shell and communicate to and fro from the TCL script . Any pointers will be appreciated .

Regards,
Mithun

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掩饰不了的爱 2024-08-09 13:07:22

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

If you have lots of data to send to the tcl script, you could open read and write pipes with proc_open(). Then, in the tcl script, use gets stdin varname to read a line from stdin.

凉世弥音 2024-08-09 13:07:22

我知道了如何将值从 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)));

I got to know the way to pass values from php script to TCL script passthru("tclsh83 Testcases/source.tcl $arg1 $arg2 "); // command line arguments Is there a better way to execute the TCL script ? Thanks , Mithun

So what's wrong about this way? It is the best way if you will always be passing only 2 parameters and they will be from a trusted source. If not, you can have an array of parameters, escape them using escapeshellarg(), join() them and put the result into the command string. For example:

$params = array( /* <...> */ );
echo passthru('tclsh83 Testcases/source.tcl ' .
              join(' ', array_map('escapeshellarg', $params)));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文