{"id":21558378,"url":"https://github.com/doublespout/clusterplus","last_synced_at":"2025-07-02T22:35:59.003Z","repository":{"id":2108957,"uuid":"3050675","full_name":"DoubleSpout/ClusterPlus","owner":"DoubleSpout","description":"Auto load js file,Auto restart child process, Multi child process listen multi port","archived":false,"fork":false,"pushed_at":"2011-12-31T15:11:00.000Z","size":97,"stargazers_count":13,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T10:58:18.179Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"spout.cnodejs.net","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DoubleSpout.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-12-26T07:19:44.000Z","updated_at":"2017-04-22T09:18:29.000Z","dependencies_parsed_at":"2022-08-27T11:51:16.854Z","dependency_job_id":null,"html_url":"https://github.com/DoubleSpout/ClusterPlus","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DoubleSpout/ClusterPlus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoubleSpout%2FClusterPlus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoubleSpout%2FClusterPlus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoubleSpout%2FClusterPlus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoubleSpout%2FClusterPlus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DoubleSpout","download_url":"https://codeload.github.com/DoubleSpout/ClusterPlus/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DoubleSpout%2FClusterPlus/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263227950,"owners_count":23433963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T08:14:41.374Z","updated_at":"2025-07-02T22:35:58.958Z","avatar_url":"https://github.com/DoubleSpout.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ClusterPlus——node.js多任务子进程管理模块  \n\n##simple example:\n\n    var http = require('http'),\n\n    port = 3000,\n\n    ClusterPlus = require('../lib/ClusterPlus'),\n\n    server = http.createServer(function (req, res) {\n\n\t\tres.end('this is a fdsfds, devleper!');\n\n\t}),\n\n    cp = ClusterPlus({logger:true});\n\n    if(cp.isWorker){\n\n\tserver.listen(port);//listen\n\n\tconsole.log('server listen at port '+port);\n\n     }\n\n    if(cp.isMaster){\n\n\tsetInterval(function(){console.log(cp.workobj);\n\n\t},3000)\n\n       }\n\n\n##这是个简单的例子，\n\n将创建cpu个子进程来监听3000端口。\n\n支持自动reload，比如您可以试试将3000端口改成3001。\n\n不用重新启动node.js进程就可以改为监听3001端口\n\n您可以试着此句：\n\nconsole.log('server listen at port '+port)\n\n改为：\n\nconsole.log('server listen at port 'port)\n\n然后点击ctrl+s保存，这样程序就会报错，无法访问3000端口\n\n您不必重启，只需将代码改回：\n\nconsole.log('server listen at port '+port)\n\n服务又重新启动了，又可以正常访问3000端口了\n\n您还可以修改 this is a fdsfds, devleper! 改成其他任意的东西\n\n您再访问看看3000端口，发现其改变了\n\n\n\n\n## ClusterPlus\n      \n ClusterPlus是一个基于 node.js v0.6.5 的cluster加强模块，主要提供如下功能：\n \n 1、可以多开子进程，并且可以在建立子进程时监听不同的端口，或者做其他事情，详情参阅example\n\n 2、当子进程意外死亡时，主进程会自动唤醒，并且还是监听之前的端口，或做之前的事情\n\n 3、加入reload.js模块，当子进程为一个时，自动打开relaod功能，当监听目录有文件变更时，自动重启子进程，目前多子进程支持此功能不稳定\n\n 4、可以通过实例化的ClusterPlus对象，在master进程中，ClusterPlus.workobj 数组，按顺序存放素有子进程的pid\n\n 5、ClusterPlus.restart()方法，可以传入pid对单个子进程进行重启，如果不传入则视为全部子进程重启\n  \n\n## Installation\n\n    download it!\n\n## API\n\nsetting example:{\n\n\tlogger:Boolean || function(str){},//布尔值，用来表示是否打开日志,或者是function，用来记录日志的方法,参数是str输出字符串\n\n\tnum:Integer, //整数，启动几个子进程\n\n\tCreateCallback:function(err, childobj){}, //函数，当创建完成后执行，返回的参数是num整形表示第几个child，和进程ID\n\n\tDeadCallback:function(err, childobj){},//函数，当子进程死掉时执行，返回的参数是num整形表示第几个child，和进程ID\n\n\tRestartCallback:function(err, childobj){},//函数，当子进程重启时执行，返回的参数是num整形表示第几个child，和进程ID\n\n\treload:Boolean,string //布尔值或字符串，当为true时默认启动目录，或者为文件目录。\n\n\t*注意：reload只有在启动一个子进程的情况下才工作良好，并且reload会遍历监听设定目录下的所有目录，请妥善设定监听目录，默认是启动目录\n\n\t*childobj = {num:num, pid:pid}\n\n\t}\n\n或者直接传入 setting = Integer,表示启动多个node.js\n\n或者不传参数，表示启动1个子进程进入，reload模式开启\n\nClusterPlus = require('ClusterPlus')();\n\n返回ClusterPlus实例，master中将有：\n\n1、ClusterPlus.workobj 数组，按顺序存放素有子进程的pid\n\n2、ClusterPlus.restart()方法，可以传入pid，如果不传入则视为全部子进程重启","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoublespout%2Fclusterplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoublespout%2Fclusterplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoublespout%2Fclusterplus/lists"}