繁体   English   中英

如何从 PHP 脚本运行 Nodejs 服务器?

[英]How to run Nodejs Server from PHP script?

我有一个 PHP 服务器,它是主要的应用程序。 我有一个 Nodejs 服务器,它是一个子应用程序。

Nodejs Server 用于通知机制。 我希望能够从我在 PHP 上运行的主应用程序中禁用通知机制。

有一个按钮。 单击它后,我更改了我的 Nodejs 配置文件,现在我想重新启动 Nodejs 服务器。 我想我可以在 PHP 中做这样的事情:

exec("杀死sudo lsof -t -i:4849 "); exec("节点服务器.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 &"');

我将 stdout 和 stderr 重定向到 /dev/null。 我将它作为一个独立的进程运行。它就像一个魅力。

我的建议是:不要。

将 Node 服务器作为独立服务器运行,可以通过Express等框架或其他方式运行。 然后,您可以通过专用网络公开您的 Node 应用程序的端点(这将是最简单的 IMO 解决方案)和/或在您的 PHP 应用程序和您的 Node 应用程序之间使用简单的授权机制。 然后,您可以通过该简单的 API 端点启动/停止通知系统,而不是每次都终止/重新启动您的 Node 应用程序。 假设它因任何原因在启动时崩溃,您将无法从您的 PHP 应用程序中得知它已关闭。

我不知道您的通知应用程序究竟是如何工作的,但我猜它正在处理某种流,您可以轻松关闭它而不会杀死整个 Node 服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM