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

所以开始我build立一个NodeJS应用程序,与网站的前端一起工作。 这是build立的,我想要的是通过PHP启动它。 所以你可以点击保存,然后启动它,如果需要的话。

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

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

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

但由于某种原因,当我点击保存在前端它只是挂起,并继续加载…但在页面上什么也没有显示? 它创build了我可以看到的过程:

 lsof -i tcp:8000 

和该页面只停止加载时,我杀了该节点正在运行的进程…

我在用:

 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';