Кода -копия выглядит следующим образом:
var http = require ('http');
функция fib (n) {
if (n <2) {
возврат 1;
} еще {
вернуть Fib (n - 2) + fib (n - 1);
}
}
var server = http.createserver (function (req, res) {
var num = parseint (req.url.substring (1), 10);
res.writehead (200);
res.end (fib (num) + "/n");
});
server.listen (8000);
Приведенный выше пример содержит службу расчета последовательности Fibonacci. Поскольку этот расчет довольно трудоемкий и является единственным потоком, только один может обрабатывать, когда есть несколько запросов одновременно. Эта проблема может быть решена через child_process.fork ().
Вот пример на официальном сайте. Этот пример может быть использован для понимания функции fork ().
Кода -копия выглядит следующим образом:
var cp = require ('child_process');
var n = cp.fork (__ dirname + '/sub.js');
n.on ('message', function (m) {
console.log ('родитель получил сообщение:', m);
});
N.send ({hello: 'world'});
Результат выполнения приведенного выше фрагмента кода:
Кода -копия выглядит следующим образом:
Сообщение родителя: {foo: 'bar'}
Ребенок получил сообщение: {hello: 'world'}
Содержание sub.js заключается в следующем:
Кода -копия выглядит следующим образом:
process.on ('message', function (m) {
console.log ('ребенок получил сообщение:', m);
});
process.send ({foo: 'bar'});
Объект процесса имеет метод send () в детском процессе, и он публикует объект сообщения каждый раз, когда он получает сообщение
Небольшой головокружение, так это то, что сообщение, отправленное child.send (), получено методом процесса.on (), а сообщение, отправленное методом Process.send (), получено методом ребенка.on ().
Ссылаясь на этот пример, мы можем улучшить первый сервис, который предоставляет данные Fibonacci, чтобы каждый запрос имел отдельный новый процесс для его обработки.
Кода -копия выглядит следующим образом:
var http = require ('http');
var cp = require ('child_process');
var server = http.createserver (function (req, res) {
var Child = cp.fork (__ dirname + '/fibonacci-calc.js') ;//each запрос генерирует новый дочерний процесс индивидуально
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
Кода -копия выглядит следующим образом:
функция fib (n) {
if (n <2) {
возврат 1;
} еще {
вернуть Fib (n - 2) + fib (n - 1);
}
}
process.on ('message', function (m) {
process.send ({result: fib (m.input)});
});
После начала обслуживания посетите http: // localhost: 8080/9, чтобы вычислить значение последовательности Фибоначчи 9.
Выше приведено в этой статье, надеюсь, вам понравится.