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

问题描述:

因此,我开始构建一个NodeJS应用程序,它与网站的前端一起工作。这是建立的,我想要的是通过PHP启动它。所以你可以点击保存,然后启动它,如果需要的话。从PHP启动节点似乎保持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上埃尔卡皮坦 还需要在Linux CentOS的

使用本作品。它将抑制STDOUT和STDERR,并立即返回而不等待命令完成。

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

+0

嗨感谢这个,我尝试使用nohup的,但我得到了以下错误:nohup的:不能从控制台分离:不适当的IOCTL用于设备 –

+1

您好,我只是用这个和它的工作,事实证明我没有正确管理标准输出,所以它会让PHP挂起。非常感谢! –