我的问题是我需要一个PHP脚本来连续提供其执行的证书点。我有工作AJAX来获取html但是只有在脚本完成后它才会回声。这是一个例子:
<?php
class test {
function test() {
echo '1';
sleep(20);
echo '2'
sleep(5);
}
}
即使功能仍在继续,我还需要一些方法让echo实际显示在浏览器中。我尝试使用全局变量和会话变量无济于事。
感谢您的帮助!
答案 0 :(得分:0)
我已经看到很多人在尝试做这类事情的问题,但据我所知,实际上不可能像你只使用PHP和AJAX那样做。为了使用AJAX而不是websockets或其他方法,您可以在需要提供输出的点处将脚本分成单独的部分,并将输出作为对单独的AJAX请求的响应。这是我的意思的基本例子。页面上的脚本可以启动该过程并重复调用以逐步完成该过程,直到完成为止。
<button id="begin_process">Start</button>
<script type="text/javascript">
function step(step_number) {
$.get('test.php', {'step_number': step_number}, function(response){
console.log(response.message);
if (response.next_step) {
step(response.next_step);
}
}, 'json');
}
$(document).ready(function(){
$('#begin_process').click(function(){
console.log('go!');
step(1);
});
});
</script>
test.php的:
<?php
class Test {
function step($step_number) {
switch ($step_number) {
case 1:
return array('next_step' => 2, 'message' => 'step 1 complete');
case 2:
sleep(20);
return array('next_step' => 3, 'message' => 'step 2 complete');
case 3:
sleep(5);
return array('message' => 'finished');
}
}
}
$test = new Test();
echo json_encode($test->step($_GET['step_number']));