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

时间:2017-05-25 11:09:49

标签: 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

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

我正在使用:

kill -9 <pid>

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

任何帮助都将不胜感激。

一旦注意,它是从命令行运行的,所以该文件是一个单独的启动器类,如果我通过php运行它并添加一些代码来完成它的工作任务,它只在我从其他问题上称之为我有问题吗?

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

我在MacBook Air El Capitan上, 还需要在Linux CentOS上工作

1 个答案:

答案 0 :(得分:1)

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

>>> user_selection = 'Barracuda Limited' >>> save_name = user_selection.lower().replace(' ', '_') >>> save_name 'barracuda_limited'