介绍目前项目使用node作为一个简单的后台服务。随着其承担越来越多的在线业务服务,对服务器的稳定性提出了要求,其中最重要的一点就是保持服务的存活。它具有在进程终止后自动重新启动的能力。foreverforever是一个简单的命令行工具,可确保给定的脚本继续运行。forever完全基于命令行操作。在forever进程下,创建一个node子进程,通过monitor监控node子进程的运行状态。一旦文件更新或进程挂起,forever会自动重启节点服务器,保证应用的正常运行。所以只要看看永远的项目。主要流程控制方面的代码地址。启动方法letchild_process=require('child_process')letspawn=child_process.spawnMonitor.prototype.start=function(restart){varself=this,child;child=this.trySpawn();...返回这个;};Monitor.prototype.trySpawn=function(){varrun=this.parser(this.command,this.args.slice()),stats;返回spawn(run.command,run.args,this.spawnWith);};核心是利用nodeapi中的spawn创建子进程,也就是我们真正需要运行的node端服务。自动重启父子进程通信的核心是保活,主要是监听子进程,也就是需要守护的退出事件。child.on('exit',function(code,signal){varspinning=Date.now()-self.ctime
