ssh write()read()过早退出

时间:2015-02-24 01:22:18

标签: php jquery ajax ssh

我编写了一段代码,用于在服务器上安装软件。这一切都很完美,但代码的一部分。

当我开始使用read()和write()时,它会做它应该做的事情。我告诉它yum安装几个软件然后启动屏幕所以当页面失败时,软件的安装仍将继续。所以一切顺利。然后我开始安装vestacp例如。

$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX); 
$ssh->write("yum install screen wget -y\n");
$ssh->setTimeout(10); 
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$ssh->write("screen\n");
$ssh->setTimeout(10);
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$ssh->write("curl -O http://vestacp.com/pub/vst-install.sh\n");
$ssh->setTimeout(10);
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$ssh->write("bash vst-install.sh\n");
$ssh->setTimeout(10);
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$ssh->write("y\n");
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$ssh->write("webmaster@yourdomain.com\n");
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$ssh->write("vps.yourdomain.com\n");
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
$output = $ssh->read('/.*@.*[$|#]|.*[P|p]assword.*/', NET_SSH2_READ_REGEX);

所以它开始安装过程。这都是从ajax函数激活的,存储在输出中的数据由div中的jquery显示。

但是,这就是问题所在。大约一分钟后,ajax返回成功数据并输出div中的$输出。当我打开命令行并重新连接屏幕时 - 我发现安装仍在运行。这也是我使用屏幕的原因,所以我确信即使在浏览器出现问题时,该过程仍会继续。

所以现在我正在寻找一个解决方案,以确保我不会太快看到输出。如果我要安装需要两个小时的东西怎么办?我想让它显示我的加载动画2个小时。这非常重要,或者它希望安装的软件比实际安装的速度快得多。

谁能在这里帮助我。

感谢。

1 个答案:

答案 0 :(得分:0)

我的问题的解决方案非常简单,超时是问题,因为它被设置为10.这意味着它在服务器等待连接或执行进程时输出。增加它解决了这个问题。