gpt4 book ai didi

javascript - 通过从 NodeJS 中执行 PHP 脚本来重新启动 NodeJS

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:32 31 4
gpt4 key购买 nike

我在尝试更新文件夹并再次部署其内容时遇到问题。我必须使用 NodeJS 并已获得端口 8080 来使用。我尝试创建一个 php 脚本(update.php):

<?php
echo exec("git pull");
echo exec("node app.js");
?>

现在我想启动NodeJS脚本进行更新,最终目标是能够重新启动服务器。

我使用express模块​​:

app.get('/Update', function(req,res) {
exec("php update.php", function(error, stdout, stderr) {
process.exit(0);
}
}

问题在于,当 NodeJS 服务器收到脚本的响应但脚本尝试启动 NodeJS 服务器时,它会退出。这显然不会发生,因为它已经在指定的端口上运行。

现在我在谷歌上发现使用名为“nodemon”的模块,但是我没有获得 sudo 访问权限,因此安装它是不可能的。其他结果正在使用

ps aux | grep node
kill -9 PROCESS_ID

这也会产生问题,因为很难配置 PHP 脚本来终止指定的进程,但除此之外,还有其他 NodeJS 服务器在给定的父文件夹的其他子文件夹中运行。这意味着如果我使用“killall node”,我会让很多人生气,因为我杀死了他们的服务器。

仅使用端口 8080 并希望在访问某个链接时部署 Github 存储库中的更改来解决此问题的最佳方法是什么?

最佳答案

可以通过Node.js命令process.pid获取 Node 的进程id。

然后,您可以创建一个执行所有命令的 bash 脚本,并在环境变量中给出 PID。

1)忘记update.php

2)路线

app.get('/update', function(req, res) {
var spawn = require('child_process').spawn;
spawn('sh', [ 'update.sh' ], {
env: { NODE_PID: process.pid }
});
});

3) update.sh

git pull
kill -9 $NODE_PID
node app.js

关于javascript - 通过从 NodeJS 中执行 PHP 脚本来重新启动 NodeJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34153167/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com