You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本科毕设:Web C++编译器实时输入问题的PHP实现问询

解决方案方向提示

关于proc_open的可行性

proc_open完全可以解决你的实时输入问题。它和exec的核心区别在于,能为子进程单独创建**标准输入(stdin)、标准输出(stdout)、标准错误(stderr)**的管道连接,PHP可以实时读写这些管道:

  • 编译C++程序后,用proc_open启动运行程序的进程,配置好三个管道的句柄
  • 后端持续监听stdout/stderr的输出,一旦检测到程序处于等待输入的状态,就通过通信机制告知前端
  • 前端收集用户输入后传给后端,后端将输入写入子进程的stdin管道,程序就能继续执行并返回后续输出

其他可行实现思路

  • WebSocket双向通信:替代传统AJAX轮询,建立前端和后端的长连接。后端通过proc_open处理进程IO,有输出实时推送给前端;前端收到输入请求时,即时把用户输入发送给后端写入stdin,实现真正的交互式体验。
  • 容器化运行环境:用Docker或类似容器工具隔离用户代码的运行环境,既提升安全性(防止恶意代码破坏服务器),也能通过容器的IO接口实现实时交互。可以结合proc_open调用Docker命令,或者直接使用Docker API管理容器的输入输出。
  • 前端预输入收集:如果场景允许用户提前输入所有参数,可在前端收集完整输入后,一次性通过exec或proc_open传给程序,但这仅适用于非实时交互的场景,不符合repl.it的实时输入需求。

内容的提问来源于stack exchange,提问作者EvaldasL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:47:01