我有一个PHP服务器端脚本,在foreach循环中,通过SSH连接到路由器并执行一些配置块。
<?php
function apply($hostname){
$ssh = new Net_SSH2($hostname);
if (!$ssh->login($this->username, $this->password)) {
exit('Login Failed');
}
$i = 1;
foreach($NMConf->configuration as $conf_step){
$ssh->write($conf_step); //Can take 5s...
$this->ssh_errors[] = $ssh->read("#");
echo "Step".$i." ok.. <br/>";
$i++;
flush();
sleep(1);}
} ?>
这个功能由jQuery和Ajax请求调用......
$.ajax({
url:'apply',
type:'POST',
cache:false,
async:false,
data:{},
success: function(data){
console.log(data);
$('#myDiv').append(data); // *_*
}
});
我想在输出div中显示不同的步骤,例如..
Step 1 (working....)
然后
Step 1 OK!
Step 2 (working ....)
然后
Step 1 OK!
Step 2 OK!
我该怎么做?
我看了很长的投票资料和反转ajax,但似乎有点棘手。
任何想法!
由于
答案 0 :(得分:1)
我的建议,放入会话的东西的信息,并尝试询问PHP脚本的状态
创建将读取会话
的脚本<?php
$step = $_GET["step"];
if($_SESSION["last_step"] != $step) //just to avoid same info twice
{
if(isset($_SESSION['step'.$step])
echo $_SESSION['step'.$step];
else
}
else { echo '10' }; //this will tell you that next step is not executed jet
?>
更新现有脚本,以便在完成或处理数据后将数据放入会话中。 更新您的javascript以执行您想要的每一秒或每个时间。
var _int = setInterval(your_method, 1000);
完成所有步骤后,只需清除间隔_int clearInterval(_int)