我是新來的PHP,我想控制一個PHP while循環腳本,使用按鈕(開始/停止),開始按鈕使一個AJAX調用start.php腳本定義$_SESSION['loop'] = TRUE
並執行循環,停止按鈕進行ajax調用stop.php腳本,只是將$_SESSION['loop']
更改爲FALSE
。改變SESSION變量停止「while循環」
下面是到目前爲止我的代碼,但是當我打的停止按鈕我就報警(成功停止)只有while循環結束循環,這意味着循環並沒有打破,因爲我是假設之後。
我認爲這是在循環執行時被鎖定的會話。如果是這樣,如何更改$_SESSION['loop']
值並使循環讀取該值每個時間?
的index.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>
start.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;
}
}
?>
stop.php
<?php
session_start();
if(isset($_SESSION['loop'])) {
$_SESSION['loop'] = FALSE;
}
?>
是的,你的循環在完成之後不會停止,或者直到PHP執行時間結束,並且新的SESSION值在進程中間也不可用於頁面......因此,你不能類似 – 2013-03-25 13:23:48
@Akam,有關如何實現這一目標的任何建議? – thesubroot 2013-03-25 13:30:00
改爲使用數據庫存儲系統,並在循環內不斷重新檢查。 IE每個'if($ _ SESSION ['loop'] ..'應該是一個sql select查詢和'$ _SESSION ['loop'] = ..'應該是一個sql更新查詢 – Waygood 2013-03-25 13:34:15