2013-10-09 2 views
-1

, когда я нажимаю на его запуск, он должен начать выполнение кода, и когда я нажимаю кнопку «остановить», он должен прекратить выполнение и распечатать все, что он выполнил. , когда я запускаю следующий код, он не работает , что на самом деле я хочу, когда я нажимаю кнопку «начать», он должен начать печатать число от 1 до 50 inbetween, когда я нажимаю кнопку «Стоп», он должен печатать числа, все еще где они были выполнены.прекращение выполнения кода не работает

<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'); 
    } 
} 
+2

Я думаю, что у вас есть некоторая путаница в отношении того, что может и не может быть сделано с PHP. –

+0

Используйте javascript для выполнения такого рода работ. – Salim

+0

Что вы ожидаете от кода и что он на самом деле делает? –

ответ

-1

Попробуйте следующий код может быть, это поможет вам

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

wow он работает, но не способен понять логику. – namratha

+0

можно сделать на двух разных страницах: например, на одной странице и остановке на другой странице – namratha

+0

Да, это может быть сделано с помощью cookie/базы данных и ajax, хотя будет немного сложнее управлять. – Salim

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> 

Опять же, это неправильный способ сделать то, что мы здесь сделали.

+0

Почему вы дважды проверяете одно и то же? – Daedalus

+0

@Daedalus Спасибо, изменил это. – vbrmnd

Смежные вопросы