2010-10-31 34 views
0

我在尝试确定使用PHP提供基于Ajax的终端的最佳方法。我还没有写这又做出了尝试,但滚行的想法的时候,我可以看到它可能是唯一的方式,将2个脚本:用于web终端的PHP CLI + Ajax

  • 脚本1;处理服务器和客户端浏览器之间的Ajax通信 。当 请求使用终端, 它连接到(或作为服务启动,然后 连接到)脚本2通过套接字。

  • 脚本2;执行系统调用, 将输出传回给Ajax 脚本以通过套接字输出。

虽然我可以看到多个漏洞,但我想知道是否有人创建/看过一组可以执行这些任务的脚本?任何有识之士将不胜感激!

谢谢:)


编辑:我想我是不清楚的几件事情。我发现模仿终端几个剧本,提供近,我要找的功能,如AjaxPHPTerm(http://sourceforge.net/projects/ajaxphpterm/

问题是,我试图找到允许相互作用的方法与shell脚本。如果脚本使用AjaxPHPTerm提示Press any key to continueSelect option [x],它只会挂起或退出shell脚本。

这就是为什么我开始思考套接字或流;一些形成直接I/O流到系统调用的方式。

回答

1

Http是无状态的,AJAX,套接字或基于服务器生成的页面的任何其他技术不会改变它神奇的。无论你使用什么技巧,它都不会有效,而且根本不值得付出努力(至少在我看来)。

+0

我可以理解使用我描述的技术的缺点,也许写一个applet会有好处。不过,我想我真正的问题是,是否有可能在PHP中为系统调用创建一个直接I/O流,从而提供与调用中间执行进行通信的能力? – Dan 2010-10-31 23:53:45

1

问题似乎是,AjaxPHPTerm实际上比终端更接近shell(查看代码,它似乎自己执行CWD处理,并且具有简单的read-eval-print循环)。

假设服务器上有一个Posix兼容的操作系统,实现这个的正确方法可能是使用伪终端设备,以便您的Web终端在系统上看起来像一个虚拟终端,运行程序可以交互式访问。