触发节点js文件
我有一个通过node.js运行的JS文件,所以通常我打开一个terminal窗口,键入类似node myfile.js
,它运行,整天运行; 乐趣。
然后,当我想重新启动它,我打控制C,然后退出。 然后我可以再次运行该命令。
现在我想做的是能够通过网页做到这一点,以便我的用户可以运行特定的JS文件,也能够“重新启动”他们。
所以有两个问题:
- 有没有可能,如果是的话,我该如何开始?
- 安全吗?如果不安全,可以安全吗?
基于swatkins响应
我试了这个,什么都没有
$output = exec("node -v"); echo $output;
那么我试图在我的本地机器,它运作良好,给了什么?
另外我还不确定安全性和停止正在运行的脚本的能力
假设你在基于Unix的操作系统上:
你可以通过exec()函数运行shell命令:
// in php file // to start the script exec("node myscript.js &", $output);
$output
成为每行$output
的数组,因此您可以看到进程ID是什么。 那么你将使用该进程ID来杀死脚本:
exec("kill " . $processid);
我会避免与shell的任何直接交互。 这可能是最安全的,要这样解决:
- 实现一些总体的“服务”脚本,启动用户节点应用程序并保持运行(类似https://github.com/isaacs/node-supervisor )
- 创build它,所以它会自动重新启动对相关文件或数据库条目的更改
- 用户触发重新启动时,将标志(timestamp?)添加到由reboot-script监视的数据库条目或文件。 然后它将重新启动node.js-app /脚本。