我需要在PHP中處理非常長的運行進程(刷新大文本文件並返回匹配的行)。當我們從命令行運行平均查詢時,該過程可能需要10-15米。PHP和jQuery:在搜索運行時返回增量結果
我想在PHP/jQuery的,實行由此我開始查詢,然後當他們回來的時候表現出增量結果。
我實現了接近,在那裏我有一個Ajax調用做搜索(工作正常),並有運行調用類的第二種方法得到的結果週期定時器功能。但是,我意識到第二次調用將真正創建一個新的類實例,所以$ this-> current在主查詢和週期更新計時器之間是不同的。
這裏是我嘗試(我踢它關閉點擊一個表單按鈕時)的JavaScript:
<script>
function update_status(data) {
alert(data);
jQuery.each(data, function(key, val) {
if (key == "progress")
$("#progressbar").progressbar({ value: val });
});
}
function progress_setup() {
setInterval(function() {
jQuery.ajax({
type:'POST',
dataType:'json',
complete:function(XMLHttpRequest, textStatus){
update_status(textStatus)
},
url:'<?php echo url_for("@grep_status"); ?>'
})},
2000);
}
function grep(elements) {
jQuery.ajax({
type:'POST',
dataType:'html',
data:jQuery(elements).serialize(),
success:function(data, textStatus){jQuery('#results').html(data);},
beforeSend:function(XMLHttpRequest){progress_setup()},
url:'/grep'});
}
</script>
但是,這似乎並沒有在正確的軌道。核心問題似乎是:
- 長期運行的任務在PHP
- 你如何獲得該任務回到一個進度條的狀態和增量結果對話框?
TIA 邁克
這與進度條類似(儘管不完全相同)。檢查[執行ajax狀態檢查](http://stackoverflow.com/questions/5113012/implementation-of-ajax-status-check)。它看起來像你在找什麼。 – Herbert