CNode

node.js执行脚本遇到的问题

问答
Mmodispy发布于12 年前最后回复9 年前13 回复6224 浏览0 收藏

具体是这样的,做了一个在网页执行后台脚本的东西,现在遇到的问题的是,后台脚本有些执行时间比较长,并且结果是一行行慢慢显示的,我现在想做的是在网页端也一行行显示???现在只实现了等待脚本执行完,后一次显示

我现在是用node.js实现的,执行脚本用的是chiild_process 中的exec,直接取其stdout当成结果,我要怎么一行一行通过exec去取结果哇

查看回复

回复 (13)

M
modispy#1·12 年前

另外我现在是用scoket.io去监听是否有消息,进行推送的,在exec执行的过程中,只能一步拿到所有结果,不能一行行实时地拿......

W
wenbob#2·12 年前

设计这样一个机制: 1、客户端产生一个随机数ID。 2、客户端准备好批量数据的持续接收处理事件: socket.on( 随机数ID_data, function(data){}); socket.on( 随机数ID_end, function(data){}) ... 3、客户端 emit( 后台命令, 参数, 随机数ID) 4、服务器端执行命令,持续把数据发回给客户端 socket.emit( 随机数ID_data, 数据 ) 5、执行完毕,服务器端发送 socket.emit( 随机数ID_end, 数据 )

M
modispy#3·12 年前

楼上~你这想法确实好,受教了,但是还有一个问题我后台用child_process exec函数去执行shell脚本,我只能通过stdout一次拿到所有的结果,不能刚输出一行结果就让socket.emit发送尼

M
modispy#4·12 年前
引用 wenbob设计这样一个机制: 1、客户端产生一个随机数ID。 2、客户端准备好批量数据的持续接收处理事件: socket.on( 随机数ID data, function(data){}); socke...

@wenbob 楼上~你这想法确实好,受教了,但是还有一个问题我后台用child_process exec函数去执行shell脚本,我只能通过stdout一次拿到所有的结果,不能刚输出一行结果就让socket.emit发送尼

L
littlehaker#5·12 年前

不知道这个能不能满足你的要求 procstreams

M
modispy#6·12 年前
引用 littlehaker不知道这个能不能满足你的要求 procstreams

@littlehaker 貌似有点用,我研究研究.....

M
modispy#7·12 年前
引用 littlehaker不知道这个能不能满足你的要求 procstreams

@littlehaker 还是不行,这个只是,方便了各种shell命令运用,不能拆分这个执行过程,一行行拿到stdout的结果

L
leapon#8·12 年前

我也有这个问题。这个是child_process exec的局限。

B
bnuhero#9·12 年前

不知道你脚本文件的内容是什么?

使用pty.js,启动一个pty(伪终端窗口),把脚本里面的命令一个一个逐次执行,在data事件中处理每个命令的输出信息。

M
modispy#10·12 年前
引用 leapon我也有这个问题。这个是child process exec的局限。

@leapon @wenbob@littlehaker 我现在准备这样,就是把脚本文件一行行读取,再一行行拿出来用child_process去执行,不知道这个到时脚本参数接收的时候会不会出问题 估计还得把$1直接换成传入的参数...各位觉得咋样

L
leapon#11·12 年前
引用 leapon我也有这个问题。这个是child process exec的局限。

@modispy 如果脚本文件的每一行是独立的,你的方法还可行。好多脚本的行行间有逻辑关系,就不能用上述方法了。

M
modispy#12·12 年前
Z
zzuzsj#13·9 年前

大兄弟,你现在有解决方法了么?来自三年后的问候

参与回复
登录后即可参与回复。登录