【发布时间】:2019-06-12 02:18:16
【问题描述】:
我有一个 PHP 服务器,它是主要的应用程序。 我有一个 Nodejs 服务器,它是一个子应用程序。
Nodejs 服务器用于通知机制。我希望能够从我在 PHP 上运行的主应用程序中禁用通知机制。
有一个按钮。单击它后,我更改了 Nodejs 配置文件,现在我想重新启动 Nodejs 服务器。 我想我可以在 PHP 中做这样的事情:
exec("杀死sudo lsof -t -i:4849");
exec("node server.js");
潜在问题: 1)权限问题:我想这可以通过让我的apache用户拥有节点应用程序的所有权来解决。我对吗? 2)Exec:执行 exec 会导致我的浏览器继续加载。我做了 netstat 并发现 Nodejs 服务器正在运行。这是让我担心的问题。我想我需要做一些 fork 和 exec 方法,以便子进程(Nodejs)独立运行。
请帮忙。
解决方案:
exec("fuser -k ". NODEAPPPORT ."/tcp > /dev/null 2>&1 &");
exec('bash -c "exec nohup setsid node "'.NODEPATH.'/app.js" >
/dev/null 2>&1 &"');
我将标准输出和标准错误重定向到 /dev/null。 我将它作为一个独立的进程运行。它就像一个魅力。
【问题讨论】:
标签: php node.js ubuntu exec chmod