この記事では主に、node.js の再生プロセスの例を紹介します。Node は、次のように、classic サンプル コードを worker.js ファイルとして保存します。
let http=require('http'); http.createServer(function (req,res) { res.writeHead(200,{'Content-Type':"text/plain"}); res.end('hello world') }).listen(Math.round((1+Math.random())*1000),'127.0.0.1');
次のコードをマスターとして保存します。 js を作成し、node master.js を介して起動します。
let fork=require('child_process').fork; let cpus=require('os').cpus();for(let i=0;i<cpus.length;i++){ fork('./work.js'); }
*nix システムで ps aux|grep worker.js を介してプロセス数を確認します。
これはマスター ワーカー モードであり、マスター スレーブ モードとも呼ばれます。
フォークによってコピーされたプロセスはすべて独立しています。このプロセスには、独立した新しい V8 インスタンスがあります。プロセスのフォークにはコストがかかります。
新しいバージョンのノードのサブプロセスには、同期サブプロセスと非同期サブプロセスもあります
。
- spawn(): 子プロセスを開始します
- exec(): 子プロセスを開始します。 spawn との違いは、コールバック関数があることです
- execFile(): 子プロセスを開始して実行可能ファイルを実行します
- fork(): spawn と同様に、ノードのサブプロセスを作成するには js ファイルを指定するだけでよいという点が異なります。spawn と exec および execFile の違いは、後者の 2 つの作成時に指定できることです。 timeout 属性を使用してタイムアウトを設定すると、後で子プロセスを強制終了できます。
let cp=require('child_process'); cp.spawn('node',['worker.js']);//没有回调函数cp.exec('node worker.js',function (err,stdout,stderr) {}); cp.execFile('worker.js',function (err,stdout,stderr) {}); cp.fork('./worker.js');
let cp=require('child_process');let n=cp.fork(__dirname+ './worker.js'); n.on('message',function (m) {}); n.send({hello:'world'});
関連推奨事項:
PHP プロセス間通信の詳細な説明以上がnode.jsの楽しいプロセスインスタンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。