Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php启动节点似乎可以保持php运行?_Php_Node.js_Websocket_Frontend_Shell Exec - Fatal编程技术网

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

从php启动节点似乎可以保持php运行?,php,node.js,websocket,frontend,shell-exec,Php,Node.js,Websocket,Frontend,Shell Exec,因此,首先,我正在构建一个NodeJS应用程序,它与网站前端一起工作。这是建立的,我想通过PHP启动它。因此,如果需要,可以单击“保存”,然后启动它 该应用程序是一个websocket服务器,它将监听websocket并处理来自客户端(我的网站前端)的数据/命令 现在,我用来启动它的代码如下: $command = '/usr/local/bin/node main.js & echo $!'; $processid = shell_exec($command); 但由于某种原因,当我

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

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

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

$command = '/usr/local/bin/node main.js & echo $!';
$processid = shell_exec($command);
但由于某种原因,当我点击前端的save时,它只是挂起并继续加载。。。但是在页面上什么都不显示?它创建了我所看到的流程:

lsof -i tcp:8000
只有当我终止节点正在运行的进程时,页面才会停止加载

我正在使用:

kill -9 <pid>
kill-9
杀了它。所以我有点不明白为什么不在后台运行它,然后完成PHP脚本。。。就这么挂着

任何帮助都将不胜感激

需要注意的是,它都是从命令行运行的,所以文件是一个单独的启动程序类,如果我通过php运行它并添加一些代码来执行任务,那么只有当我从其他地方调用它时,我才有问题

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

我在MacBook Air El Capitan上,
还需要在Linux CentOS上工作,请使用此选项。它将同时抑制STDOUT和STDERR,并在不等待命令完成的情况下立即返回


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

您好,谢谢您,我尝试过使用nohup,但是我遇到了以下错误:nohup:无法从控制台分离:设备的ioctl不合适。您好,我刚刚使用了它,结果它成功了,我没有正确管理标准输出,所以它让PHP挂起。非常感谢你!