从 php 启动节点似乎保持 php 运行?

Launching node from php seems to keep php running?

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

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

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

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

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

lsof -i tcp:8000

并且只有当我终止节点正在 运行ning 的进程时页面才会停止加载...

我正在使用:

kill -9 <pid>

杀了它。所以我有点迷茫为什么它不在后台 运行 运行它然后完成 PHP 脚本...它只是挂在上面?

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

请注意,命令行中的所有 运行 都很好,所以该文件是一个单独的启动器 class,如果我 运行 通过 [=42] =] 并添加一些代码来完成它工作的任务,只有当我从其他地方调用它时我才会遇到问题?

如果有帮助;该网站使用的框架是 Joomla 3.x,在此先感谢。

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

上工作

用这个。它会立即抑制 STDOUT 和 STDERR 以及 return,而不等待命令完成。

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