我有一個奇怪的問題。從產卵子進程獲取信息的最佳方式
我必須在我的節點應用程序中產生一個進程(外部的,沒有可能的fork)。這個子進程然後發送我需要返回並存儲在數據庫中的輸出。我現在做的方式是回顯我的數據(它是JSON)的每一行,並聽取標準輸出的內容。
子代碼:
var cntSent=0
for (var j = 0, lUF = uniqueFlyers.length; j < lUF; j++) {
var products = uniqueFlyers[j].products;
for (var k = 0, lP = products.length; k < lP; k++) {
var pstr = products[k].product;
this.echo(pstr);
cntSent+=1;
}
}
console.log(cntSent);
末,cntSent = 10000。
節點側:
var cntReceived
proc.stdout.on('data', function(line) {
cntReceived+=1;
console.log(line);
});
proc.on('close', function (code) {
console.log(cntReceived);
});
末,cntReceived = 3510
我可以看到輸出的所有我的數據,但它聚集在一起,並配備在大塊。 我的想法是寫入一個文件,然後用節點處理文件,但它似乎是多餘的,我想開始處理數據。任何建議,以最準確,最快的方式?
與往常一樣編輯: 寫下問題讓我想。我只是傻了,會更好地緩衝數據,然後解析它?這是JSON該死的!
聽起來不錯,但並非所有的輸出都是JSON。如果data.indexOf('[')=== 1?'),我可以添加一個條件來發送數據到流中: – xShirase
不是沒有複雜的代碼。在另一種情況下數據會是什麼樣子?難道不能將它轉換成JSON數組嗎? –
有幾條消息看起來像'DB record:rec number'。我想我可以JSONify,但我仍然不得不以某種方式將它們與其他人分開。 – xShirase