我在文件do.php
中有一个函数,如下所示:
<?php
if(isset($POST['submit']))
{
for($i=0;$i=10;$i++)
{
$reponse = array(
'content' = > "This is an example - process #" . $i;
);
echo json_encode($response);
sleep(1); // sleep one second each loop
}
}
?>
我有一些简短的JQUERY代码使用ajax发布数据......
<button onclick="post()">Submit</button>
function post()
{
$.ajax({
type: "POST",
url: "do.php",
data: data,
success: function (data){
var json = jQuery.parseJSON(data);
$('#result').html(json.content);
}
});
}
这是输出......
This is an example - process #1
This is an example - process #2
This is an example - process #3
....
当我点击“提交”按钮时,我可以看到firebug上的请求运行10秒钟完成并显示结果。现在我希望每个结果在while循环中完成后逐行显示。我可以构建一个websocket系统,但是这个系统需要花费很多时间和大系统,如果可能的话我只需要一个简单的方法来实现。
我仍然尝试将输出保存到txt文件中并使用JQUERY每500ms读取一次,但这种方式需要太多请求并且效果不佳。
答案 0 :(得分:1)
你想要达到什么目的?
根据我的理解,您尝试在SERVER端执行多个进程,并且您希望从CLIENT端查询其状态(哪个进程仍在运行/已完成...)
如果是这样,IMO您可以执行这些进程(使用fork()或其他),并让父进程为您的AJAX请求返回每个进程的唯一令牌标识符列表。
现在,每隔500毫秒,使用 setInterval(),查询您收到的令牌。
希望它有所帮助。