在php中创建后台进程

时间:2013-05-15 02:22:45

标签: php process

我正在一个网站上工作,我们希望用户能够在服务器上创建新进程并与服务器进行交互。例如,用户想要运行C代码:

#include<sdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    printf("%d", a);
}

在服务器中,我们创建一个进程并使其保持活动状态,直到进程停止运行。使用exec等功能时,我们无法执行scanf项操作。使用proc_open时,我们无法保持子进程的活着......或者我们可以,但我们不知道如何...

程序可以是:用户发送指令 - &gt;服务器创建一个新的进程来执行指令 - &gt;在执行该指令时,服务器将stdout发送到网页并从用户的输入中获取stdin - &gt;进程停止运行..

1 个答案:

答案 0 :(得分:0)

我有一个定制的芯片和引脚解决方案,使用“&amp;”触发后台PHP CLI脚本在exec电话中。然后通过简单地通过2个ascii文件传递字符串来传达前端和后台脚本。 这是粗糙但有效的。 显然,两个进程都必须检查/读取其传入的文件,决定做什么(例如,在后台进程中执行C ++代码),然后在必要时通过写入其输出文件进行响应。将这三个步骤放入一个循环中,你就有了一个粗略的监听器/守护进程。 后台作业必须同时监听作为授权服务的通信通道的套接字,这进一步复杂化。 这是一个单一的用户场景,但可以通过使用唯一文件或写入密钥数据库表来适应多用户。

电话会是这样的:

exec ("php mydaemon.php 2>&1>/dev/null &");

我假设一个Linux服务器 - 因此linux“&amp;”在后台运行的指令。 2&gt;&amp; 1&gt; / dev / null只会抑制stdout和stderr。

不太确定如何在Windows中解决它 - 但必须有Wscript或VBscript等效?