我想在网站上显示rsync副本的进度。我已经使用\ rd作为换行符使用while循环读取了rsync的stdout,因此我可以获得更新的进度(因为rsync将每个更新用\ r分隔,以便将它写在同一个线)。
我想通过网络套接字将它发送到浏览器但是我遇到的问题是mojo不会发送文本直到while循环完成后(从而击败获取更新进度的perps)
我在网上找到的壁橱解决方案是this。 但我不知道会有多少行,我不知道如何自动化递归。
这是我到目前为止所拥有的:
websocket '/rsync' => sub {
my $self = shift;
# Incoming message
$self->on(message => sub {
my ($self, $msg) = @_;
$self->send("echo: $msg");
});
{
open(RSYNC, "-|", "rsync -av --progress --stats '/dir1' /dir2");
local $/ = "\r";
while(<RSYNC>) {
$self->send($_);
}
}
};
编辑:将“r”更改为“\ r”