在php中创建后台进程


Create a background process in php

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

#include<sdio.h>
int main()
{
    int a;
    scanf("%d", &a);
    printf("%d", a);
}

在服务器中,我们创建一个进程并使其保持活动状态,直到该进程停止运行。当使用像exec这样的函数时,我们不能做scanf的事情。当使用proc_open时,我们不能保持子进程存活。或者我们可以,但我们不知道如何…

过程可以是:用户发送指令->服务器创建一个新进程来执行指令->当执行指令时,服务器将stdout发送到网页并从用户的输入中获取stdin ->进程停止运行…

我有一个定制的芯片和引脚解决方案,它在执行调用中使用"&"触发了一个后台PHP CLI脚本。然后前端和后台脚本通过简单地通过2个ascii文件传递字符串进行通信。这是粗暴但有效的做法。显然,两个进程都必须检查/读取其传入的文件,决定要做什么(例如:在后台进程中执行c++代码),然后在必要时通过写入其输出文件进行响应。将这三个步骤放入一个循环中,就得到了一个粗略的侦听器/守护进程。由于后台作业必须同时监听作为授权服务通信通道的套接字,这使情况变得更加复杂。这是一个单用户场景,但可以通过使用唯一文件或写入键控数据库表来适应多用户。

调用看起来像这样:

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

我假设一个Linux服务器-因此Linux"&"指令在后台运行。2>&1>/dev/null只会抑制stdout和stderr。

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