我是 php 新手,我想控制一个 php while 循环脚本,使用按钮(开始/停止),开始按钮对定义和执行循环的start.php$_SESSION['loop'] = TRUE
脚本进行 ajax 调用,停止按钮进行ajax 调用stop.php脚本,该脚本只是更改$_SESSION['loop']
为FALSE
.
下面是我到目前为止的代码,但是当我点击停止按钮时,我只有在 while 循环完成循环后才成为警报(成功停止),这意味着循环没有像我假设的那样中断。
我认为这是在循环执行时锁定的会话。如果是这样,如何更改$_SESSION['loop']
值并使循环每次都读取该值?
索引.php
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#start').click(function(){
$.ajax({
url: "start.php"
});
});
$('#stop').click(function(){
$.ajax({
url: "stop.php",
success: function(){
alert('success stop');
},
error: function(){
alert('failure stop');
}
});
});
});
</script>
<button id="start">Start</button>
<button id="stop">Stop</button>
开始.php
<?php
session_start();
$_SESSION['loop'] = TRUE;
ini_set('max_execution_time', 300);
$i = 0;
while($i < 100) {
if ($_SESSION['loop'] == TRUE) {
//query to save some variables
// Pause 10s after saving 2
if ($i != 0 && $i%2 == 0) {
sleep(10);
}
$i++;
} else {
break;
}
}
?>
停止.php
<?php
session_start();
if(isset($_SESSION['loop'])) {
$_SESSION['loop'] = FALSE;
}
?>