私はphpを初めて使用し、ボタン(開始/停止)を使用してphp whileループスクリプトを制御したいのですが、開始ボタンはループを定義して実行するstart.phpスクリプトへのajax呼び出しを$_SESSION['loop'] = TRUE
行い、停止ボタンはに変更されたstop.phpスクリプトへの ajax 呼び出し。$_SESSION['loop']
FALSE
以下はこれまでのコードですが、停止ボタンを押すと、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;
}
?>