La copie de code est la suivante:
var http = require ('http');
fonction fib (n) {
if (n <2) {
retour 1;
} autre {
retour fib (n - 2) + fib (n - 1);
}
}
var server = http.createServer (fonction (req, res) {
var num = paSeInt (req.url.Substring (1), 10);
res.writehead (200);
res.end (fib (num) + "/ n");
});
server.Listen (8000);
L'exemple ci-dessus fournit un service de calcul de séquence Fibonacci. Étant donné que ce calcul prend beaucoup de temps et est un seul thread, un seul peut être traité lorsqu'il y a plusieurs demandes en même temps. Ce problème peut être résolu via child_process.fork ().
Voici un exemple sur le site officiel. Cet exemple peut être utilisé pour bien comprendre la fonction de Fork ().
La copie de code est la suivante:
var cp = require ('child_process');
var n = cp.fork (__ dirname + '/sub.js');
n.on ('message', fonction (m) {
Console.log ('Message du parent Got:', M);
});
N.Send ({Hello: 'World'});
Le résultat de l'exécution de l'extrait de code ci-dessus:
La copie de code est la suivante:
Parent Got Message: {Foo: 'Bar'}
Enfant Got Message: {Hello: 'World'}
Le contenu de sub.js est le suivant:
La copie de code est la suivante:
process.on ('message', fonction (m) {
Console.log ('Enfant Got Message:', M);
});
process.send ({foo: 'bar'});
L'objet de processus a une méthode envoyée () dans le processus enfant, et il publiera l'objet de message à chaque fois qu'il reçoit un message
Ce qui est un peu étourdi, c'est que le message envoyé par child.send () est reçu par la méthode process.on (), et le message envoyé par la méthode process.send () est reçu par la méthode child.on ().
Se référant à cet exemple, nous pouvons améliorer le premier service qui fournit des données Fibonacci, afin que chaque demande ait un nouveau processus distinct pour le gérer.
La copie de code est la suivante:
var http = require ('http');
var cp = require ('child_process');
var server = http.createServer (fonction (req, res) {
var child = cp.fork (__ dirname + '/fibonacci-calc.js') ;//each demande génère un nouveau processus d'enfant individuellement
child.on ('message', fonction (m) {
res.end (M.Result + '/ n');
});
Var Input = paSeInt (req.url.Substring (1));
child.send ({input: input});
});
server.Listen (8000);
fibonacci-Calc.js
La copie de code est la suivante:
fonction fib (n) {
if (n <2) {
retour 1;
} autre {
retour fib (n - 2) + fib (n - 1);
}
}
process.on ('message', fonction (m) {
process.send ({result: fib (M.Input)});
});
Après avoir commencé le service, visitez http: // localhost: 8080/9 pour calculer la valeur de la séquence Fibonacci de 9.
Ce qui précède est tout sur cet article, j'espère que vous l'aimez.