原谅这个愚蠢的问题,如果是这样,我对Node来说比较新。子进程输出到socket.io
我在我的节点服务器上产生一个子进程,用于将数据集导入数据库。子进程使用参数执行osm2pgsl
,它有自己的内部输出,用于显示当前处理的数据和已处理内容的计数。
我有一个简单的节点脚本来产生这个过程,并记录来自这个过程的信息,当它到达时。我需要访问的主要信息不通过stdout, stderr or on
进行轮询,这是有问题的。
节点脚本
var util = require('util'),
spawn = require('child_process').spawn,
file = process.argv[2],
ls = spawn('osm2pgsql', ['--slim', '-d', 'gis', '-U', 'postgres', '--number-processes', '3', file]);
ls.stdout.on('data', function (data) {
process.stdout.write('Currently processing: ' + data.toString() + '\r');
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data.toString());
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code.toString());
});
输出
Mid: pgsql, scale=100 cache=800
Setting up table: planet_osm_nodes
stderr: NOTICE: table "planet_osm_nodes" does not exist, skipping
stderr: Setting up table: planet_osm_ways
stderr: NOTICE: table "planet_osm_ways" does not exist, skipping
stderr: Setting up table: planet_osm_rels
stderr: NOTICE: table "planet_osm_rels" does not exist, skipping
stderr:
Reading in file: /OSMDATA/great-britain-latest.osm.pbf
Processing: Node(10k 10.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)
Processing: Node(20k 20.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)
Processing: Node(30k 30.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)
从stderr:
线,你可以看到,我能够访问流,但Processing: ...
正是我需要的获得高于一切。这是从子进程内打印的,我不确定如何直接访问它。
是否有任何方式从我的Nodejs服务器访问输出(上图)?
编辑:我打算把这个输出管道连接到Socket.io,但我需要首先访问它,因此标题。