Параллельный вызов ajax для простого индикатора выполнения, не показывающего текущий прогресс, который находится внутри переменной сеанса - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь реализовать простой индикатор выполнения.Это циклы до постоянного числа, и я хочу видеть текущее число цикла как прогресс.Однако он не обновляется, пока цикл не закончится.Я где-то видел, что проблема вызвана из-за блокировки сеанса, но я не мог заставить его работать.

Коды сценариев и HTML:

<script>

    function makeRequest(toPHP, callback) {
        var xmlhttp;
        xmlhttp=new XMLHttpRequest();
        xmlhttp.onreadystatechange=function()
          {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    callback(xmlhttp.response);
                }
          }
        xmlhttp.open("GET",toPHP,true);
        xmlhttp.send();
     }

     function loop() {
         var loop_index = document.getElementById("loop_nr").value;
         makeRequest("/wp-content/plugins/promc/templates/server_side.php?nr="+loop_index, function(response) {
             document.getElementById("sumDiv").innerHTML="Total sum = " + response;
             clearInterval(timer);
         });

         setInterval(makeRequest("/wp-content/plugins/promc/templates/getter.php", function(response) {
             document.getElementById("percentageDiv").innerHTML=response;
          }),1000);       
     }
</script>

<div id="percentageDiv"> Percentage div</div>
<div id="sumDiv"></div>
<input type="text" id="loop_nr" value="30000000">
<input type="submit" onclick="loop()">

Getter.php

<?php
    session_start();
    echo 'Progress: '.$_SESSION['progress'];

?> 

Server_side.php

<?php 
session_start();

if(isset($_GET['nr'])) {
    $result = sum($_GET['nr']);
}

function sum($nr) {
    $progress = 0 ;
    $sum = 0 ;
    for ($i = 1; $i <= $nr; $i++) {
       $sum = $sum + $i;
       $progress++;
       $_SESSION['progress'] = $progress;    
    }
    echo 'Sum: '.$sum.' Session Progress: '.$_SESSION['progress'];
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...