0

我一直在玩弄用 javascript/PHP 模拟命令行的想法。基本思想是,我希望能够像在命令行上一样运行 c++ 程序。

我用 javascript 和一个 C++ 代码解析器制作了一个基本控制台,以将某些内容添加到原始源代码中,以使我的 PHP 程序执行脚本能够识别何时有输入请求或程序何时结束。现在,我希望能够在 javascript(控制台 Web 应用程序)和 PHP(程序执行)之间进行通信,以便 PHP 可以告诉 javascript 显示(输出)和请求输入的内容。

我已经用 AJAX 计划了它。一旦用户在控制台(javascript 端)输入程序运行命令,它就会切换到执行状态并向带有程序名称的 PHP 脚本发送请求。该脚本将启动该过程并通过回显结果来结束。基于请求响应,javascript 将再次向 PHP 脚本发送请求,PHP 脚本会从它离开的地方提取并回显另一个结果以供 javascript 继续使用。这将一直持续到 PHP 脚本回显错误字符串或终止字符串。

在对 AJAX 进行了许多天真的尝试之后,我知道我的想法是完全错误的。我一直想知道是否有另一种方法可以在两端之间进行通信。有没有一种方法可以保存我的 PHP 脚本的状态(资源、变量和文件句柄),这样每当我从 javascript 端向它发送请求时,我就可以从上次中断的地方继续输出?

我还没有找到一个,这让我相信这种方法是一厢情愿的想法。

我真的很感激一些见解。

4

3 回答 3

6

PHP Sessions

Sessions

Session support in PHP consists of a way to preserve certain data across subsequent accesses. This enables you to build more customized applications and increase the appeal of your web site. All information is in the Session reference section.

于 2012-11-28T22:02:26.243 回答
0

使用 PHP Sessions 库(由 epascarello 建议)可能是您最好的选择。但是,如果您想“自己动手”,或者您只是想了解 PHP Sessions 之类的库是如何工作的,那么基本要点是:

  1. 如果您最初希望将任何数据从服务器传递到客户端,请将这些数据写入页面。例如<script>var serverData = <?= serverDataVariable ?>;(我的 PHP 有点生疏;如果语法不正确,请原谅我)。

  2. 如果最后有任何数据要传递到服务器,请将这些数据放在 HTML 表单中,并将该表单的操作设置为服务器端处理程序的 URL。这样,当用户提交表单时,其中的所有数据都将发送到该 URL(在 GET 或 POST 参数中,取决于您如何设置表单)。

  3. 如果您想在 1. 和 2. 之间的任何时间进行通信,则需要使用 AJAX(当然,您也可以使用 comet,但这是先进的,所以不用担心)。AJAX 使用浏览器的 XmlHttpRequest 本质上是进行表单提交,只是“在幕后”而不需要更改页面。AJAX 请求可以提供参数(就像表单提交一样),它们还可以从服务器返回数据(几乎就像您最初将数据写入页面一样)。

于 2012-11-28T22:07:48.110 回答
0

我会推荐 websockets over AJAX,也许使用Ratchet

虽然它是用 Node.js 而不是 PHP 编写的,但您可能会在tty.js中找到一些灵感

祝你好运!

于 2012-11-28T22:07:49.873 回答