Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JavaScript来回运行程序_Php_Javascript_Ajax_Proc Open - Fatal编程技术网

Php JavaScript来回运行程序

Php JavaScript来回运行程序,php,javascript,ajax,proc-open,Php,Javascript,Ajax,Proc Open,问题: 我想看看是否可以在服务器端运行的程序和客户端运行的JavaScript之间来回切换。程序的所有输出都发送到JavaScript以显示给用户,用户的所有输入都从JavaScript发送到程序 使用AJAX可以轻松地让JavaScript接收输出并发送输入。问题是我不知道如何访问服务器上已经运行的程序 尝试: 我试图使用PHP,但遇到了一些无法跨越的障碍。现在,我可以使用proc\u open使用PHP执行程序而不会出现任何问题。我可以连接到stdin和stdout流中,我可以从程序中获取输

问题

我想看看是否可以在服务器端运行的程序和客户端运行的JavaScript之间来回切换。程序的所有输出都发送到JavaScript以显示给用户,用户的所有输入都从JavaScript发送到程序

使用AJAX可以轻松地让JavaScript接收输出并发送输入。问题是我不知道如何访问服务器上已经运行的程序

尝试

我试图使用PHP,但遇到了一些无法跨越的障碍。现在,我可以使用
proc\u open
使用PHP执行程序而不会出现任何问题。我可以连接到
stdin
stdout
流中,我可以从程序中获取输出并发送输入。但我只能这样做一次

如果再次执行相同的PHP脚本(?),我将再次运行该程序。因此,我从多次执行中得到的只是程序首先多次写入stdout的内容

现在,我在脚本中使用了
proc\u open
,它应该只负责输入和输出,因为我不知道如何访问已经运行的程序的
stdout
stdin
流。在我看来,我需要在同一个PHP脚本的多次执行中保持程序的执行状态;维护
proc\u open
返回的资源,以及连接到
stdin
stdout
流的
管道

$\u会话
不起作用。我不能用它来维护资源


有没有一种方法可以让这样一个程序来回运行?非常感谢您的帮助。

这听起来像是一份适合您的工作

试试类似或


我一直使用Node来处理这类事情,但是从上面的两个链接和其他一些链接来看,PHP似乎也有一些选项。

可能有一种更有效的方法,但是您可以让程序将其输出写入文本文件,并用PHP读取该文本文件的内容。这样,您就可以访问运行程序中的完整数据流。管理文件大小和处理来自多个客户端的请求都有问题,但这是一种简单的方法,可能足以满足您的需要。

您再次运行相同的程序,因为这是PHP的工作方式。在您的情况下,客户端执行HTTP请求并运行脚本。第二个请求将再次运行脚本。我不确定是否可以进行连续的交互,因此我建议让您的脚本能够处理离散事务

为了计算同一“交互”的不同步骤,您必须在数据库中保存以前步骤的数据。基本上,您需要为每个客户端提供一些唯一的散列,以便在脚本中识别它们,然后它将知道谁执行请求,并且能够将来自一个用户的连续请求与来自不同用户的请求区分开来


<>如果你的脚本很重并且运行很长时间,考虑两个重一个脚本,一个用于交互(Ajax将查询第二个)。在本例中,第二个脚本将把数据填充到数据库中,重脚本将从数据库中获取数据。

他提到他可以使用ajax进行客户机/服务器通信。我认为他正在寻找一种服务器端语言(比如php)与一个持续运行的进程“程序”通信的方法,这个进程“程序”是他用proc_open之类的东西触发的。当然,所有的逻辑也可以用websocket或comet解决方案来代替——但听起来他想与服务器上运行的另一个进程“对话”。。。