var http = require('http');
Funktion fib (n) {
Wenn (n < 2) {
Rückgabe 1;
} sonst {
Rückgabe 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);
Das obige Beispiel stellt einen Fibonacci-Sequenzberechnungsdienst bereit. Da diese Berechnung ziemlich zeitaufwändig ist und mehrere Anforderungen gleichzeitig vorliegen, kann dies durch child_process gelöst werden. fork() Diese Frage
Hier ist ein Beispiel von der offiziellen Website, anhand dessen Sie die Funktion von fork() besser verstehen können
var cp = require('child_process');
var n = cp.fork(__dirname '/sub.js');
n.on('message', function(m) {
console.log('PARENT got message:', m);
});
n.send({ hello: 'world' });
Das Ergebnis der Ausführung des obigen Codeausschnitts:
PARENT hat die Nachricht erhalten: { foo: 'bar' }
KIND hat die Nachricht erhalten: { hello: 'world' }
Der Inhalt von sub.js ist wie folgt:
process.on('message', function(m) {
console.log('CHILD got message:', m);
});
Process.send({ foo: 'bar' });
Im untergeordneten Prozess verfügt das Prozessobjekt über eine send()-Methode und veröffentlicht jedes Mal ein Nachrichtenobjekt, wenn es eine Nachricht empfängt
Was etwas verwirrend ist: Die von child.send() gesendete Nachricht wird von der Methodeprocess.on() empfangen, und die von der Methodeprocess.send() gesendete Nachricht wird von child.on() empfangen Methode
Anhand dieses Beispiels können wir den ersten Dienst verbessern, der Fibonacci-Daten bereitstellt, sodass für jede Anfrage ein separater neuer Prozess zu verarbeiten ist
var http = require('http');
var cp = require('child_process');
var server = http.createServer(function(req, res) {
var child = cp.fork(__dirname '/fibonacci-calc.js');//Jede Anfrage generiert einen neuen untergeordneten Prozess
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
Funktion fib(n) {
Wenn (n < 2) {
Rückgabe 1;
} sonst {
Rückgabe fib(n - 2) fib(n - 1);
}
}
process.on('message', function(m) {
Process.send({result: fib(m.input)});
});
Besuchen Sie nach dem Starten des Dienstes http://localhost:8080/9, um den Wert der Fibonacci-Folge von 9
zu berechnen
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.