注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

snoopyxdy的博客

https://github.com/DoubleSpout

 
 
 

日志

 
 

ClusterPlus-v0.2.0——让node.js像php那样写代码  

2011-12-27 16:33:50|  分类: node |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
项目地址:(目前第二版:v0.2.0)
https://github.com/DoubleSpout/ClusterPlus(2011.12.27日不能使用bug已经修复)

前面一篇博客已经谈到ClusterPlus是一款多进程多任务管理moudle,对于开发过node.js的同学们最大的郁闷莫过于重复的 ctrl+c 和 按 上+回车,每次代码有一点变动就必须干掉进程,然后再重启看运行情况。对于这个问题已经有aheckmann 提供的reload.js模块了,当有文件内容发生变化时,自动重新启动node.js进程。

虽然看似已经圆满解决了,但是当我们在写代码时总归有可能出现语法错误,比如忘记加 大括号,或者使用了中文的圆括号,又或者代码写到一半,想先save一下等等。当出现上述问题时,reload.js就悲剧了。

如果用cluster模块自带的reload.js,再配合自动重新启动子进程的功能,就会反复的启动,反复的死掉,直到系统崩溃,或者主进程崩溃,除非你能在崩溃之前将代码改正确,让子进程顺利启动起来,否则还是只能将reload.js关掉,重复ctrl+c和上+回车。

ClusterPlus v0.2.0带来了全新的node.js编程体验,除了上一篇博客介绍的多进程多任务功能外,这次加入了增强型relaod.js功能。
简单介绍一下:v0.2.0带来的新变化
1、API增加一个reload选项,默认是true打开(不过目前只完美支持一个子进程的情况,在启动多个子进程时会默认为关闭),当然您也可以手动将其设置为false关闭,或者指定某一个目录,表示当这个目录下的文件发生变化时,重启子进程,ClusterPlus会自动遍历并监听该目录下的所有子目录,目前仅支持一个子进程save和reload功能。
2、当第1步重新启动的子进程由于语法错误或者其他原因意外挂掉时,不会自动反复重启,而是会挂起,等待用户再次保存文件,然后尝试重启,当失败再次挂起,成功则启动成功。
3、改写v0.1.0部分写的比较烂的代码,引入了AsyncProxy模块,增强异步的性能,修改了部分bug。
4、重新改写了reload.js文件,可以遍历多层监听目录
5、在reload工作时,增加僵尸进程杀死功能



大家期待v0.3.0吧!

上个simplejs小例子,各位可以试着运行下看看效果:ClusterPlus的API和下载地址请去github上吧

var http = require('http'),
    port = 3000,
    ClusterPlus = require('../lib/ClusterPlus'),
    server = http.createServer(function (req, res) {
res.end('this is a fdsfds, devleper!');
}),
    cp = ClusterPlus({logger:true});
if(cp.isWorker){
server.listen(port);//listen
console.log('server listen at port '+port);
}
if(cp.isMaster){
setInterval(function(){console.log(cp.workobj);
},3000)
}
//这是个简单的例子
//将创建cpu个子进程来监听3000端口。
//支持自动reload,比如您可以试试将3000端口改成3001。
//不用重新启动node.js进程就可以改为监听3001端口
//您可以试着此句:
//console.log('server listen at port '+port)
//改为:
//console.log('server listen at port 'port)
//然后点击ctrl+s保存,这样程序就会报错,无法访问3000端口
//您不必重启,只需将代码改回:
//console.log('server listen at port '+port)
//服务又重新启动了,又可以正常访问3000端口了
//然后您可以尝试修改:thank you! this is a simple example!
//改为:HO~it is modify!
//更多例子请参考expamle文件夹

郑重声明:此模块未经严格测试,出现bug请联系我吧!
另注:目前开2个以上的node.js进程频繁的保存文件可能会出现启动多余进程的bug,请tx们开发时尽量少开node.js进程。在线上环境建议将reload功能关闭。

qq:53822985
email:snoopyxdy@163.com


  评论这张
 
阅读(1027)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016