停止执行代码不起作用

时间:2013-10-09 05:37:28

标签: php html

当我点击开始它应该开始执行代码,当我点击停止它应该停止执行并打印它执行的任何内容。 当我运行以下代码时,它无法正常工作 实际上我想要的是当我点击开始它应该开始打印数字从1到50之间当我点击停止它应该打印仍然执行的数字

<form method="post">
   <input type="submit" value="start" id="start" name="start" />
   <input type="submit" value="stop" id="stop" name="stop" />
</form>

if ( isset( $_POST['start'] ) ) {
   for ( $i = 1; $i <= 50; $i++ ) {
      echo $i."<br/>";
      if ( isset( $_POST['stop'] ) ) {
         die( print_r( $i ) );   
      }
      sleep('1');
   }
}

3 个答案:

答案 0 :(得分:2)

使用jquery

的工作副本
<input type="button" value="start" id="start" name="start" />
<input type="button" value="stop" id="stop" name="stop" />

<div id='output'></div>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" 
                type="text/javascript"></script>

<script>
var timeOut = null;
var i = 0;
var printStuff = function() {
    if(i>=50) return;
    i++;
    $("#output").append(i+" ");
    timeOut = setTimeout(printStuff,1000);
};

$("#start").click(function() {
    timeOut = setTimeout(printStuff,1000);
});
$("#stop").click(function() {
    clearTimeout(timeOut);
});
</script>

答案 1 :(得分:1)

正如大家所说,这不应该由php完成,最好是通过javascript或任何其他客户端语言来完成。

但是如果你试图通过这段代码学习php或它的某些方面,那么你可以使用这段代码。

<?php 
header( 'Content-type: text/html; charset=utf-8' );
?>

<form method="GET">
<input type="submit" value="start" id="start" name="start"/>
<input type="submit" value="stop" id="stop" name="stop" onclick="document.getElementById('trackback').value = document.getElementById('counter_port').innerHTML; return true;"/>
<input type="hidden" value="" id='trackback' name='trackback'/>
<span id='counter_port' name='counter_port'>
<?php               
   if(isset($_REQUEST['start'])){          

            echo "<br/>";
            for($i=1;$i<=50;$i++){
                echo $i."<br/>";
                if(sleep(1) != 0) {
                    echo 'sleep failed';
                    break;
                }
                flush();
                ob_flush();
            }

    } else {
        echo $_REQUEST['trackback'];
    }
?>
</span>
</form>

同样,这是我们在这里所做的错误方式。

答案 2 :(得分:-1)

尝试以下代码可能会对您有所帮助

if ( isset( $_POST['start'] ) ) {
   for ( $i = 1; $i <= 50; $i++ ) {
      echo $i."<br/>";
      sleep('1');
   }
}
  if ( isset( $_POST['stop'] ) ) {
     exit("Code is stopped");
  }