0
我有一個PHP服務器端腳本,它在foreach循環內通過SSH連接到路由器並執行一些配置塊。如何使用Ajax顯示我的php循環的步驟? (long polling ...)
<?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);}
} ?>
這fonction由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 ....)
an d然後
Step 1 OK!
Step 2 OK!
我該怎麼做?
我曾看過長時間投票的東西&反向ajax,但它似乎有點棘手。
任何想法!
感謝
你錯過了最重要的一點,雖然:PHP確實只在腳本的堅持到底的$ _SESSION內容,或者當你告訴它手動這樣做。你只能用'session_write_close()來做到這一點 - 我以後再也沒有試過再打開同一個會話,可能會變成一個有趣的實驗。 – phant0m
會話是有效的,直到它處於活動狀態,並且在請求之間使用相同的會話,所以基本上,您可以在第一次請求時將值放入會話中,並且每個其他請求都只能獲取該數據,以確保您的會話爲每個請求啓動。 –
我不明白你在說什麼。重點是:當腳本正在進行中,並且您從一個腳本/請求中不斷更新$ _SESSION時,這些內容將不會在其他請求/會話中可用,直到*持久*會話數據爲止的請求。 – phant0m