Tag: fork

可以序列化node.js vm.script?

我正在尝试使用node.js vm.script预编译大量JS函数,以便我可以多次调用这些函数,而不必每次重新编译。 请注意,我不能只将函数包含在模块中,因为它们在体系结构上与“核心”代码完全分离。 这很好 – 每个编译的脚本都存储在一个对象中,并可以根据需要运行。 我想弄清楚的是如何在多个forksubprocess中使用这个模型,所以任何subprocess都可以用来运行编译后的脚本。 问题是如何序列化,所以我可以把它传递给孩子。 更重要的是,脚本variables中是否有固有的东西可以将它“绑定”到创build的过程?

执行shell命令并获取日志nodejs

我正在使用这个本地nodejs方法来运行一个可执行文件: child = exec('node app.js', function (error, stdout, stderr) {} }); 该进程终止时调用callback。 但是我需要什么进程在终身login控制台。 这可能吗? 谢谢!

使用Node.js集群模块在不同的用户下绑定一个工作者?

如何使用Node.js 集群模块在不同的用户下分配worker?

如何在Node.js中分离一个进程,从父进程中的缓冲区中运行JS代码,而不是从文件中运行?

我在用 child_process.fork(scriptFile) fork一个subprocess并在scriptFile中执行JS。 问题是我想优化它,因为我想要运行的JS代码已经在父级的缓冲区中可用。 我现在将它写入一个文件,然后指定该path到child_process.fork。 这涉及到两个冗余的I / O。 首先我把JS写到父文件中。 然后由subprocess读取。 任何方式来防止这种情况?

Node.js中的subprocess之间的通信

我想在node.js中创build一个使用childproccess的fork()方法创build两个进程的程序。 过程如下: Father.js Son1.js Son2.js 我想直接在两个subprocess之间传输数据,而不是在父子之间传输数据。 我向你展示了我想要做的事情。 儿童进程之间的沟通 我试着用下面的代码,但它不适合我。 在father.js代码中,我正在创buildsubprocess,如下所示: const cp = require("child_process"); var son1 = cp.fork("${__dirname}/son1.js"); var son2 = cp.fork("${__dirname}/son2.js"); console.log("father sending message to son1.."); son1.send({msg:'Hi son1',br:son2}); console.log("father sending message to son2.."); son2.send({msg:'Hi son1',br:son1}); Son1.js的代码: var brother=null; process.on('message', function(json) { console.log('message father in son1.js;', json.msg); brother=json.br; brother.send("hello I'm son1.js"); }); 而Son2.js的代码是: var brother=null; […]

如何让我的nodejs应用程序服务于多个用户?

我正在使用nodejs和expressjs框架实现一个非常基本的网站。 这个想法是,用户进入网站,点击一个button,将在服务器中触发一个cpu密集型任务,并在完成任务后在浏览器上获取消息。 我感到困惑的是如何为每个用户完成这个任务,而不阻塞事件循环,因此,没有用户需要等待另一个完成。 另外,如何为每个用户使用已用资源的新实例(对象,variables..)。 玩完和阅读后,我碰到了孩子的过程。 基本上,我想为每个用户分派一个新的child_process,这样无论sorting需要多less时间,它都不会阻塞我的事件循环。 不过,我还不确定这是否是这种情况下最好的做法。 现在,我已经做了我想做的事情,但只有一个用户,但是当尝试启动另一个用户时,事情变得混乱,variables被共享。 我知道我不应该使用在模块中声明的全局variables,但是可以通过另一种方式使variables在单个模块中的函数之间共享,但是对于每个用户它们是不同的! 我知道这个问题可能听起来很基本,但我有点想念节点js是如何为不同的用户提供新的variables,与每个用户相关的对象。 总之,我的问题是:1-节点如何同时为多个用户服务? 我什么时候该如何分stream或执行一个新的subprocess,并且是每个用户还是基于cpu中的我的#个核心?如何分离我的应用程序中每个用户的资源,使得每个用户用户有他自己的计数器,电子邮件和其他对象和variables。 4-我什么时候需要,或者我必须杀死我的subprocess。 提前致谢。 码: var cp = require('child_process'); var child= cp.fork('./routes/mysort-module'); exports.user=function(req,res){ // child = new cp.fork('./routes/mysort-module'); // Should I make new child for each user? child.on('message',function(m){ res.send('DONE');} child.send('START PROCESS'); // Forking a cpu-intensive task in mysort-module.js } 在我的分拣模块中: var variables = require(…); //GLOBAL […]

node.js群集客户端可以接收分叉环境中的深层对象或数组吗?

我正在尝试传递一个像这样深的对象的数组: data = [ { "name": "foo", "data": [ { "id" : 1, "type" : "A", } ] }, { "name": "bar", "data": [ { "id" : 2, "type" : "B", } ] }, ]; 到nodejs中的分叉集群客户端就像这样 cluster.fork({"stuff": data}) 但在工作人员的对象到达时,我看到了这样一个stringconsole.dir()它。 '[object object],[object Object]' 文件说明 cluster.fork([ENV]) env要添加到工作进程环境的对象键/值对。 返回工人对象 我怀疑这意味着cluster.fork只能使用单个对象,并且传入的深层对象正在被投射。 这是有道理的,但我似乎无法证实这确实如此。 我的问题是:我是否正确cluster.fork只能采取单一级别的对象,无论我是否是正确的有人可以指向我的一个参考,说明它? 谢谢。

从本身重新启动一个节点进程

是否有可能从本身内部完全重新启动正在运行的单线程节点进程? 我想象一下服务器的步骤是这样的: closures监听套接字 通过child_process.fork或child_process.spawn将一个孩子child_process.spawn ,将process.argv交给孩子。 process.exit()父(不应该杀死孩子) 子再次绑定侦听套接字 可以这样做还是我完全错了?

使用Fork从孩子向父母发送错误

我有下面的代码 // Parent.js var cp = require('child_process'); var child = cp.fork('./pChild.js'); child.on('message', function(m) { // Receive results from child process console.log('received: ' + m); }); // Send child process some work child.send('First Fun'); // pChild.js process.on('message', function(m) { console.log("Helloooooooooo from pChild.js") // Pass results back to parent process process.send("Fun1 complete"); }); 如何处理来自pChild.js的父项错误并终止进程?

如何分叉另一个模块的进程

TL; DR:如何分叉一个位于当前正在运行的进程之外的进程? 我正在尝试使用child_process的child_process来启动父进程退出的另一个nodejs进程。 我用exec成功执行了这个进程,但是我需要subprocess独立于父进程,所以父进程可以不等待subprocess而退出,因此我试着用detached: true, stdio: 'ignore'出来的spawn进行尝试detached: true, stdio: 'ignore' unref()和unref()过程: 将options.detached设置为true可以使subprocess在父进程退出后继续运行。 spawn('node MY_PATH', [], {detached: true, stdio: 'ignore'}).unref(); 这产生了: node MY_PATH ENOENT错误。 不幸的是我没有解决。 遇到麻烦实现这个spawn和阅读文件再次我想我应该实际使用fork : child_process.fork()方法是child_process.spawn()的一个特例,专门用于产生新的Node.js进程。 fork()没有采取一个命令作为其第一个参数,但是我似乎无法适应的模块,因为我试图作为一个subprocess运行的脚本modulePath在当前正在运行的进程的目录,但在一个他的依赖。 回到起始TL; DR – 如何分叉一个位于当前正在运行的进程之外的进程? 任何帮助将非常感激! 编辑: 提供spawn ENOENT错误的解决scheme也可能非常有用!