php - 从 php 启动 Node 似乎可以让 php 保持运行?

标签 php node.js websocket frontend shell-exec

首先,我构建了一个与网站前端一起工作的 NodeJS 应用程序。这是构建的,我想要的是通过 PHP 启动它。因此,您可以单击“保存”,然后根据需要启动它。

该应用程序是一个 Websocket 服务器,将监听 Websocket 并处理来自客户端(我网站的前端)的数据/命令。

现在我用来启动它的代码如下:

$command = '/usr/local/bin/node main.js & echo $!';
$processid = shell_exec($command);

但是由于某种原因,当我在前端单击“保存”时,它只是挂起并继续加载......但页面上什么也没有显示?它创建了我所看到的流程:

lsof -i tcp:8000

只有当我终止 Node 正在运行的进程时,页面才会停止加载...

我正在使用:

kill -9 <pid>

杀死它。所以我有点不明白为什么它不在后台运行然后完成 PHP 脚本......它只是卡在上面?

如有任何帮助,我们将不胜感激。

请注意,它都是从命令行运行的,所以该文件是一个单独的启动器类,如果我通过 php 运行它并添加一些代码来执行它可以工作的任务,只有当我从我还有其他问题吗?

如果有帮助;该网站使用的框架是Joomla 3.x,提前致谢。

我使用的是 MacBook Air El Capitan, 还需要在 Linux CentOS 上工作

最佳答案

用这个。它将抑制 STDOUT 和 STDERR 并立即返回,而无需等待命令完成。

$command = '/usr/local/bin/node main.js >/dev/null 2>&1';

关于php - 从 php 启动 Node 似乎可以让 php 保持运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44179076/

相关文章:

php - 如何验证和清理表单复选框数组?

php - 如何在PHP中获取当月第一天的星期几

node.js - mongodb:加密字段的唯一索引

node.js - PassportJS - FacebookTokenStrategy 返回 404

Golang 一对一聊天

ssl - https 的 WSS 连接失败

javascript - RxJS 5 - websocket 数组消息

php - 在 ubuntu 14.04 上编译带有 ZTS 支持的 PHP

php - 每个模型,相似的代码 - 更好的方法? (CakePHP)

node.js - 如何确保 Node.js 在 MongoDB 连接断开后继续运行?