tcl shell through apache



我有一个工具,它支持通过tclshell进行交互式查询。我想创建一个web应用程序,用户可以通过它向该工具发送不同的查询。我已经使用Apache web服务器和cgi脚本进行了一些基本编程,但我想不出一种方法来保持shell的活力并向其发送查询。

更多信息:

让我详细描述一下。该工具构建了一个图形数据结构,构建后用户可以使用tclshell查询信息,类似于获取特定节点的所有子节点。我不能用每个查询构建数据结构,因为构建需要很多时间。我想构建数据结构,并以某种方式保持外壳的活力。Apache服务器应该将所有查询发送到该shell,并将响应返回给用户

您可能想要创建一个守护进程,也许可以使用expect来生成交互式程序。守护进程程序可以使用Tcl的套接字命令通过TCP侦听查询。你的CGI程序会创建一个客户端套接字来与daemopn对话。

我会将图形管理程序嵌入一个同时运行小型web服务器(例如tclhttpd,尽管这不是唯一的选项)的解释器中,并让世界其他地方通过RESTful web访问与图形交互。然后,它可以以任何你喜欢的方式集成在Apache后面——CGI thunk会起作用,或者你可以进行请求转发,或者你写一些服务器端代码来做这件事(有很多选项!)——或者你甚至可以让客户端直接连接。许多选择都是可行的。

这个问题似乎不完整,因为您没有具体说明"交互式"对您的工具到底意味着什么。

它如何支持交互式查询?它是否以一种无休止的循环调用gets,并在读取每一行时对其进行处理?如果是这样,那么问题的解决方案很简单:Tclshell并不真正关心其标准输入是否连接到交互式终端。因此,只需在CGI请求处理代码中生成您的工具,将用户的查询写入该进程的stdin流,刷新它,然后将该进程写入的所有文本读取到其stdout和stderr流。然后将它们发送回浏览器。如何生成流程并通过其标准流与之通信在很大程度上取决于您的CGI代码。

如果你不明白这个想法,试着把你的查询写到一个文件中,然后做之类的事情

$ tclsh /path/to/your/tool/script.tcl </path/to/the/query.file

你应该有一个工具,以正常的方式做出回应。

如果交互是使用工具中的其他方式进行的,那么您可能必须将其拆分为"核心"one_answers"前端"部分,以便核心只读取查询并输出结果,而前端部分执行交互。然后按照上面概述的方式将核心连接到CGI处理代码中。

最新更新