Rumah  >  Artikel  >  hujung hadapan web  >  child_process melaksanakan pelbagai proses dalam Node.js_node.js

child_process melaksanakan pelbagai proses dalam Node.js_node.js

WBOY
WBOYasal
2016-05-16 16:16:051684semak imbas

Salin kod Kod adalah seperti berikut:

var http = memerlukan('http');
fungsi fib (n) {
Jika (n < 2) {
         kembali 1;
} lain {
Kembalikan fib(n - 2) fib(n - 1);
}
}
pelayan var = http.createServer(fungsi (req, res) {
var num = parseInt(req.url.substring(1), 10);
res.writeHead(200);
res.end(fib(bilangan) "n");
});
server.listen(8000);

Contoh di atas menyediakan perkhidmatan pengiraan jujukan Fibonacci Memandangkan pengiraan ini agak memakan masa dan berutas tunggal, apabila terdapat berbilang permintaan pada masa yang sama, hanya satu yang boleh diproses oleh child_process. fork() Soalan ini

Berikut ialah contoh dari laman web rasmi, yang melaluinya anda boleh memahami fungsi fork() dengan lebih baik

Salin kod Kod adalah seperti berikut:

var cp = memerlukan('proses_anak');
var n = cp.fork(__nama nama '/sub.js');
n.on('message', function(m) {
console.log('IBU BAPA mendapat mesej:', m);
});
n.send({ hello: 'world' });

Hasil pelaksanaan coretan kod di atas:

Salin kod Kod adalah seperti berikut:

IBU BAPA mendapat mesej: { foo: 'bar' }
KANAK-KANAK mendapat mesej: { hello: 'world' }

Kandungan sub.js adalah seperti berikut:

Salin kod Kod adalah seperti berikut:

process.on('message', function(m) {
console.log('KANAK-KANAK mendapat mesej:', m);
});
process.send({ foo: 'bar' });

Dalam proses anak, objek proses mempunyai kaedah send(), dan ia akan menerbitkan objek mesej setiap kali ia menerima mesej

Apa yang sedikit mengelirukan ialah: mesej yang dihantar oleh child.send() diterima oleh kaedah process.on() dan mesej yang dihantar oleh kaedah process.send() diterima oleh child.on() kaedah

Merujuk kepada contoh ini, kami boleh menambah baik perkhidmatan pertama yang menyediakan data Fibonacci supaya setiap permintaan mempunyai proses baharu yang berasingan untuk dikendalikan

Salin kod Kod adalah seperti berikut:

var http = memerlukan('http');
var cp = memerlukan('proses_anak');
pelayan var = http.createServer(function(req, res) {
var child = cp.fork(__dirname '/fibonacci-calc.js');//Setiap permintaan menjana proses anak baharu
child.on('message', function(m) {
          res.end(m.result 'n');
});
var input = parseInt(req.url.substring(1));
child.send({input : input});
});
server.listen(8000);

fibonacci-calc.js

Salin kod Kod adalah seperti berikut:

fungsi fib(n) {
Jika (n < 2) {
         kembali 1;
} lain {
Kembalikan fib(n - 2) fib(n - 1);
}
}
process.on('message', function(m) {
Process.send({hasil: fib(m.input)});
});

Selepas memulakan perkhidmatan, lawati http://localhost:8080/9 untuk mengira nilai jujukan Fibonacci 9

Di atas adalah keseluruhan kandungan artikel ini, saya harap anda semua menyukainya.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn