触发节点js文件

时间:2011-12-23 21:07:36

标签: php node.js command

我有一个通过node.js运行的JS文件,所以通常我会打开一个终端窗口并键入类似node myfile.js的内容,它会运行并运行一整天;乐趣。

然后,当我想重新启动它时,我点击了control-c并退出了。然后我可以再次运行命令。

现在我想做的是能够通过网页执行此操作,以便我的用户可以运行特定的JS文件,并且还能够“重启”它们。

关于这个的两个问题:

  1. 是否可能,如果可以,我该如何开始?
  2. 是否安全,如果不安全,是否可以安全?
  3. 基于swatkins响应

    我试过这个并没有得到任何东西

     $output = exec("node -v");
     echo $output;
    

    然后我尝试使用我的本地机器并且它能够正常工作吗?

    我仍然不确定安全性和停止正在运行的脚本的能力

2 个答案:

答案 0 :(得分:17)

假设您使用的是基于Unix的操作系统:

您可以通过exec()函数运行shell命令:

// in php file
// to start the script 
exec("node myscript.js &", $output);

$output成为每行输出的数组,因此您可以看到进程ID是什么。然后,您将使用该进程ID来终止脚本:

exec("kill " . $processid);

答案 1 :(得分:3)

我会避免与shell直接交互。以这种方式解决它可能是最安全的:

  • 实现一些整体“服务”-script,启动用户节点应用程序并使其保持运行(类似https://github.com/isaacs/node-supervisor
  • 制作它,因此它会自动重新启动相关文件或数据库条目的更改
  • 在用户触发重新启动时,将一个标志(timestamp?)添加到由reboot-script监视的数据库条目或文件中。然后它将重新启动node.js-app / script。
相关问题