用于fork()的交错/拆分插入循环

时间:2018-04-20 22:49:15

标签: javascript mysql node.js fork

我有一个收集不同数据的页面,在这种情况下名称,高度,重量等。我使用循环遍历行,然后我将它们一次插入我的SQL数据库一行。每个页面有1,000行,每页插入每行需要一段时间。我有兴趣尝试使用工作人员更有效地分割任务,但我不确定我是否完全了解集群和分叉。有没有办法可以给4个工人提供250个插件?在我目前的设置中,显然所有工人都做同样的线路,这导致4,000个插入而不是1,000个独特的插入。

在我的圈内

//Insert And Log
var sql = "INSERT INTO split.test (person_id,name,height,weight) VALUES (?,?,?,?)";
con.query(sql, [input_id,input_name,input_height_input_weight], function (err, rows, result) {
    if (err) throw err;
      console.log(input_id+" inserted");
    });

>> 1 Howard Jones 72 180
>> 2 John Smith 66 140
>> etc

我目前获得的

if (cluster.isMaster) {
  for (var p = 0; p < numCPUs; p++) {
    cluster.fork();

    //Insert And Log
    var sql = "INSERT INTO split.test (person_id,name,height,weight) VALUES (?,?,?,?)";
    con.query(sql, [input_id,input_name,input_height_input_weight], function (err, rows, result) {
        if (err) throw err;
          console.log(input_id+" inserted");
      });
}
} else {
  http.createServer(function(req, res) {
      res.writeHead(200);
      res.end('process ' + process.pid + ' says hello!');
  }).listen(8000);
}

>> 1 Howard Jones 72 180 [Worker 1]
>> 1 Howard Jones 72 180 [Worker 2]
>> 1 Howard Jones 72 180 [Worker 3]
>> 1 Howard Jones 72 180 [Worker 4]
>> 2 John Smith 66 140 [Worker 1]
>> 2 John Smith 66 140 [Worker 2]
>> 2 John Smith 66 140 [Worker 3]
>> 2 John Smith 66 140 [Worker 4]
>> etc

我想要什么

>> 1 Howard Jones 72 180 [Worker 1]
>> 2 John Smith 66 140 [Worker 2]
>> 3 Chris Christopher 69 220 [Worker 3]
>> 4 Matt Matthew 68 150 [Worker 4]
>> etc

0 个答案:

没有答案